home *** CD-ROM | disk | FTP | other *** search
/ IRIX Installation Tools & Overlays 2002 May / SGI IRIX Installation Tools & Overlays 2002 May - Disc 3.iso / relnotes / license_dev / ch8.z / ch8
Text File  |  2002-04-11  |  148KB  |  4,225 lines

  1.  
  2.  
  3.  
  4.                                   - 1 -
  5.  
  6.  
  7.  
  8.        8.  _G_l_o_b_e_t_r_o_t_t_e_r__F_L_E_X_l_m__R_e_l_e_a_s_e__N_o_t_e_s
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.                               Flexible License Manager
  16.  
  17.                                     Version 6.1g
  18.  
  19.                                    RELEASE NOTES
  20.  
  21.                                     July 1, 1999
  22.  
  23.  
  24.                These release notes describe the changes from FLEXlm v5.1.
  25.  
  26.  
  27.        Important note to companies using lc_init():
  28.        ____________________________________________
  29.  
  30.                As of v6.1, all companies that call lc_init() in product
  31.                shipped to customers should remove the LM_CODE macro, and
  32.                switch lc_init() to lc_new_job(), for security reasons.  This
  33.                does not apply to license-generators, or any other internally
  34.                used executables, only to product shipped to customers.  See
  35.                lc_new_job() below.
  36.  
  37.  
  38.        Overview
  39.        ________
  40.  
  41.                Version 6 is designed to make using FLEXlm-licensed products
  42.                easier for end-users.  ISVs new to FLEXlm will find these
  43.                enhancement seamless and will find the product generally
  44.                easy-to-use.
  45.  
  46.                v6.1 is functionally identical to v6.0, but has important
  47.                security enhancements.
  48.  
  49.                The result of the combination v6.0 and v6.1 changes should be
  50.                reduced support, easier distribution of license files, greater
  51.                customer satisfaction, along with improved security.
  52.  
  53.                Where v6 enhancements create compatibility issues for existing
  54.                ISVs, we've provided a simple resolution.  In v6 you can
  55.                specify "v5" behavior, which turns off all enhancements that
  56.                have compatibility issues, thereby ensuring a smooth
  57.                transition.  If you need a particular v6 enhancement that has
  58.                been turned off with "v5" behavior, you can turn on that
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.                                   - 2 -
  71.  
  72.  
  73.  
  74.                enhancement, and address the compatibility issues for that one
  75.                enhancement.  All compatibility issues are fully documented.
  76.  
  77.                License file enhancements:
  78.  
  79.                o lmgrd can read multiple license files
  80.                o FLEXlm license path can specify a directory, which automatically
  81.                  includes "*.lic" in that directory.
  82.                o License files require no editing for use at the end-user
  83.                  site.  Previously, the end-user had to edit the license
  84.                  file to specify, at a minimum, the path to the vendor
  85.                  daemon, but also the hostname, lmgrd TCP port number, and
  86.                  path to the vendor-daemon options file.  For most sites
  87.                  none of these items need editing by end-users.
  88.                o The path to the daemon (on the DAEMON line) is now optional.
  89.                  If unspecified, the $PATH is searched to start the vendor daemon.
  90.                o Licenses can now be shipped in a compressed, largely decimal
  91.                  format, which is designed to be easy to type in for
  92.                  customers that don't have access to email.
  93.                o lminstall (lmutil utility) provided to typing in decimal format
  94.                  licenses.
  95.                o lc_convert() and lc_check_key() API functions for converting
  96.                  to and from decimal, and verifying license-keys.
  97.                o Feature lines are shorter, easier to understand and type in.
  98.                o PACKAGE lines can be shipped in separate files that
  99.                  never require user editing.
  100.                o The SERVER port number is now optional.  If left unspecified,
  101.                  FLEXlm default port numbers (27000-27009) are automatically used.
  102.                o End-user options file does not need to be specified in
  103.                  the license file.  A default file name is automatically used:
  104.                  the vendor-daemon name, with ".opt" suffix, in the same
  105.                  directory where licenses are stored.
  106.                o License information can now be stored in a buffer in the
  107.                  program, instead of a file.
  108.                o Hostname on SERVER line can use the default "this_host", which
  109.                  works fine when using LM_LICENSE_FILE set to port@host, or
  110.                  if clients are on the same node as the server.  Makes initial
  111.                  installation easier.
  112.                o License path can be set with a different environment variable
  113.                  for each vendor (in addition to LM_LICENSE_FILE):
  114.                  vendor_LICENSE_FILE (e.g., "GSI_LICENSE_FILE").
  115.                o License path (via LM_LICENSE_FILE or vendor_LICENSE_FILE)
  116.                  can be set to "@host", if the server uses a default port
  117.                  number.
  118.                o Windows only:  If client checkout fails because it can't
  119.                  find the license file, the user is prompted for the license
  120.                  file location, or the hostname of the license server, and
  121.                  checkout is automatically retried.
  122.                o License files are case-insensitive.
  123.                o Optional START=... start-date in license file.
  124.                o lmdown and lmreread can affect a single vendor daemon with
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.                                   - 3 -
  137.  
  138.  
  139.  
  140.                  new -vendor argument; this can also be used to stop and restart
  141.                  a single vendor daemon
  142.                o New useful examples
  143.  
  144.                Other Enhancements:
  145.  
  146.                o Improved security
  147.                o Improved error message handling
  148.                o Alternative error message available: paragraph format with
  149.                  - 1-3 line error message, describing error, and possible
  150.                    workarounds
  151.                  - feature name (if applicable)
  152.                  - license path
  153.                  - context-sensitive information (where applicable).
  154.                o API for verifying license key in FEATURE line
  155.  
  156.  
  157.        How to Upgrade From Previous FLEXlm versions
  158.        ____________________________________________
  159.  
  160.                1) lm_code.h and lsvendor.c both have new variables
  161.                   required for v6.0.  This means you should not use the
  162.                   older copy of either of these files.
  163.  
  164.                   lsvendor.c:
  165.  
  166.                           If you don't have modifications to this file, then
  167.                           there's nothing you need to do but use the v6.0
  168.                           version of lsvendor.c.
  169.  
  170.                           If you've modified this file for previous versions,
  171.                           you'll need to re-make those modifications to
  172.                           v6.0.  The only changes to this file in v6.0 (from
  173.                           v5.x) are additional variables.
  174.  
  175.                   lm_code.h:
  176.  
  177.                           The only change in this file is the requirement
  178.                           that there be a line defining LM_VER_BEHAVIOR, e.g.,
  179.  
  180.                                #define LM_VER_BEHAVIOR LM_BEHAVIOR_V6
  181.  
  182.                            This is fully discussed below in the Compatibility
  183.                            Issues section.
  184.  
  185.                2) V6.0 requires new FLEXlm Vendor Keys.  You can obtain these
  186.                   by requesting them from support@globes.com.
  187.  
  188.                3) You can build the vendor daemon, license generators, and
  189.                   everything else in the v6.0 kit.  You'll need to make sure
  190.                   that machind/lsvendor.c has any modifications you require,
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.                                   - 4 -
  203.  
  204.  
  205.  
  206.                   and machind/lm_code.h has LM_VER_BEHAVIOR set to the right
  207.                   value.  Then simply type make in each binary kit, e.g.,
  208.                   sun4_u5, hp700_u9, etc.
  209.  
  210.                4) Read the note below about Compatibility Issues.
  211.  
  212.        Compatibility Issues For Existing FLEXlm Companies
  213.        __________________________________________________
  214.  
  215.                We have provided a 2 simple steps for compatibility
  216.                with earlier FLEXlm versions.
  217.  
  218.                Step 1: Application and Server Behavior
  219.  
  220.                        Edit lm_code.h, and change
  221.  
  222.                        From: #define LM_VER_BEHAVIOR LM_BEHAVIOR_V6
  223.                        To:   #define LM_VER_BEHAVIOR LM_BEHAVIOR_V5_12
  224.                                                     [ or V5, V4, V3, V2 ]
  225.  
  226.                        This one step sets all behaviors to be compatible with
  227.                        previous versions.
  228.  
  229.                Step 2: License file format
  230.  
  231.                        lmcrypt and makekey utilities accept the -verfmt
  232.                        flag. With the new end-user 'lminstall' utility, this
  233.                        flag is -overfmt.  Set this to 2, 3, 4, 5, 5.1 or 6,
  234.                        depending on the version that you need to keep
  235.                        compatible with:
  236.  
  237.                                lmcrypt -verfmt 5 ...
  238.  
  239.                        lc_cryptstr() also understands LM_A_LICENSE_FMT_VER
  240.                        attribute, set with lc_set_attr before calling
  241.                        lc_cryptstr(), which has the same effect as -verfmt.
  242.                        LM_A_LICENSE_FMT_VER takes the same args as
  243.                        LM_VER_BEHAVIOR: LM_BEHAVIOR_Vx.
  244.  
  245.                        When you use the -verfmt flag or LM_A_LICENSE_FMT_VER,
  246.                        the output license will be compatible with this
  247.                        version. If this is not possible,
  248.  
  249.                                1) the error LM_LGEN_VER -94 will be
  250.                                   generated: "Attempt to generate license
  251.                                   with incompatible attributes".
  252.                                2) With lmcrypt and makekey, the feature line
  253.                                   will be left as is, without replacing the
  254.                                   license-key with a correct one.  lminstall
  255.                                   will only produce the error message, and
  256.                                   will not produce the feature line.
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.                                   - 5 -
  269.  
  270.  
  271.  
  272.                In the following sections, enhancements are discussed in
  273.                detail.  Look for "Compatibility ==>" under each section for
  274.                compatibility issues.
  275.  
  276.                Important Note:
  277.                        For the most part, only compatibility issues for
  278.                        applications are mentioned; it's presumed that the
  279.                        lmgrd and vendor daemons will be v6 or higher, since
  280.                        they are guaranteed to support older applications
  281.                        correctly, unless the applications are using
  282.                        port@host, thereby avoiding reading the license file.
  283.  
  284.                Windows DLL change:
  285.  
  286.                        If you use the Trivial or Simple API, with Windows
  287.                        DLL, you must now add /DFLEXLM_DLL to your
  288.                        CL compiler command line.  Note that for security
  289.                        reasons, the static libraries are now preferred.
  290.  
  291.  
  292.        FLEXlm V6.0 Enhancements
  293.        _________________________
  294.  
  295.  
  296.                "VENDOR" is a synonym for "DAEMON"
  297.                __________________________________
  298.  
  299.                A DAEMON line can now be a VENDOR line, a less confusing
  300.                keyword, especially for non-Unix users.
  301.  
  302.  
  303.                lmgrd supports multiple license files
  304.                _____________________________________
  305.  
  306.                o lmgrd can now read multiple license files.  The only
  307.                  limitation is that you cannot mix 3-server files with
  308.                  single server files -- you need 2 lmgrd processes for that.
  309.  
  310.                o lmgrd reads all the files in the $LM_LICENSE_FILE list.
  311.  
  312.                o -c can indicate multiple files using license
  313.                  file separator (':' or Unix, ';' on Windows):
  314.                  "-c file1:file2"
  315.  
  316.                o If a path in $LM_LICENSE_FILE or -c is a directory, then
  317.                  all files matching "*.lic" in that directory are presumed to
  318.                  be license files, in alphabetical order.
  319.  
  320.                o Duplicate SERVER and VENDOR lines are ignored.  This means
  321.                  that, if desired, license files can be simply concatenated.
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.                                   - 6 -
  335.  
  336.  
  337.  
  338.                o A single lmgrd process can now support more than one license
  339.                  file, with different hostids which refer to the same host.
  340.                  Common examples of this are:
  341.                        On PC:  C: serial number, and ethernet hostids
  342.                        HP700:  ethernet address, and uname -i hostid
  343.  
  344.                  Note that though a single lmgrd can support these files,
  345.                  they *cannot* be combined into a single file, since this
  346.                  still breaks the rule that only files with identical hostids
  347.                  can be combined.
  348.  
  349.                Compatibility ==>
  350.  
  351.                        o Sites with applications older than v6 will
  352.                          still need all license information for a vendor combined
  353.                          in a single file.
  354.  
  355.                        o Older applications will not understand a license
  356.                          file path set to a directory.
  357.  
  358.                        o Older applications will fail on duplicate SERVER lines.
  359.  
  360.  
  361.                VENDOR path no longer needed
  362.                ____________________________
  363.  
  364.                In order to find the vendor daemon, lmgrd tries the following
  365.                in this order:
  366.  
  367.                        - the path on the VENDOR line
  368.                        - the current directory
  369.                        - the directory where lmgrd is located
  370.                        - the contents of the current $PATH variable
  371.  
  372.                The path actually used is printed in the debug log file.  Note that
  373.                although the path is not needed, the VENDOR line is still required.
  374.  
  375.                The new syntax for the VENDOR line is:
  376.  
  377.                VENDOR name [daemon-path] [[options=]options-path] [[port=]port-num]
  378.  
  379.                There is one new and notable ambiguity that arises with this
  380.                syntax:
  381.  
  382.                        VENDOR demo path
  383.  
  384.                Is "path" the path to the vendor daemon, or is it the path to
  385.                the end-user options file, with an empty vendor daemon path?
  386.                This is resolved with the following rule,
  387.  
  388.                        where ambiguous, the "path" (as above) is always the
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.                                   - 7 -
  401.  
  402.  
  403.  
  404.                        path to the vendor daemon.
  405.  
  406.                If the path to the end-user options file is desired, it must
  407.                be prefixed with "options=":
  408.  
  409.                        VENDOR demo options=path
  410.  
  411.                "options=" has been supported since FLEXlm v4.  Customers that
  412.                are used to simply appending an options file path to the
  413.                DAEMON line will likely run into this problem, and the symptom
  414.                will be that lmgrd will fail to start the vendor daemon,
  415.                having erroneously used the options file as the vendor daemon.
  416.  
  417.                Compatibility ==>
  418.  
  419.                        o Missing vendor daemon path does not work with
  420.                          pre-v6 vendor daemons.
  421.                        o options= is not supported by pre-v4 vendor daemons.
  422.  
  423.  
  424.                Decimal format license files
  425.                ____________________________
  426.  
  427.                FLEXlm now supports a decimal format for license files.
  428.                The purpose of this format is to make delivery and
  429.                installation of licenses easier for customers without
  430.                access to e-mail.
  431.  
  432.                Decimal format can be created using the "-decimal" argument to
  433.                either lmcrypt or makekey.  The API for generating decimal
  434.                format is to binary OR in LM_CRYPT_DECIMAL_FMT to the flag
  435.                argument of lc_cryptstr().
  436.  
  437.                A new utility, lminstall, is provided for users to enter the
  438.                decimal format license.  This utility converts the decimal
  439.                format to the normal, descriptive license format.
  440.  
  441.                While this format is intended for typing into lminstall for
  442.                conversion to the descriptive format, all v6 FLEXlm components
  443.                will understand the decimal format without conversion.
  444.  
  445.                Example decimal licenses:
  446.  
  447.                        Counted license:
  448.                        _______________
  449.  
  450.                        SERVER this_host 12345678
  451.                        VENDOR demo
  452.                        FEATURE f0 demo 1.0 permanent 1 A7F6DFD8C65E
  453.                        FEATURE f1 demo 1.0 permanent 1 AA8BD581EE63
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.                                   - 8 -
  467.  
  468.  
  469.  
  470.                        Decimal:
  471.                        demo-f0-49473-46846-62783-50738-57369-53593-728
  472.                        demo-f1-02369-24236-07508-18291-8
  473.  
  474.                        Note that the first decimal line includes the SERVER/VENDOR
  475.                        information, and the 2nd (and any subsequent lines) are
  476.                        much shorter.
  477.  
  478.  
  479.                        Demo license:
  480.                        ____________
  481.  
  482.                        FEATURE f2 demo 1.0 1-jun-98 uncounted 6E06CC47D2AB HOSTID=DEMO
  483.  
  484.                        Decimal:
  485.                        demo-f2-02753-41313-52979-22534-1299
  486.  
  487.  
  488.                Format:
  489.  
  490.                        Since the decimal lines are automatically formatted,
  491.                        the advantage in recognizing the format is only knowing
  492.                        when a line "looks" correct.
  493.  
  494.                        The decimal format is fixed:
  495.  
  496.                                vendor-feature-#####-#####-[...]
  497.  
  498.                        where
  499.                                vendor          is the vendor daemon name
  500.                                feature         is the feature name
  501.                                #####           Groups of 5 decimal numbers
  502.                                                (0-9) followed by a hyphen.
  503.                                                The last group may be less than
  504.                                                5 digits.
  505.  
  506.                        The line includes a checksum, which can detect all
  507.                        single-digit errors and most multi-digit errors in
  508.                        lines that are typed in incorrectly.
  509.  
  510.                Decimal format suggestions:
  511.  
  512.                        There are some "tricks" that are used internally
  513.                        to make decimal lines short.  Knowledge of these
  514.                        can be useful when designing feature lines.
  515.  
  516.                        Text in optional attributes
  517.                        ___________________________
  518.  
  519.                        Text in the optional feature attributes are normally
  520.                        three times longer in the decimal format than in the
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.                                   - 9 -
  533.  
  534.  
  535.  
  536.                        "normal" format.  For example: VENDOR_STRING="limit
  537.                        3" would require about 21 characters in the decimal
  538.                        version.  There's a trick to making this shorter: If
  539.                        the text portion is a decimal or hex number, then it's
  540.                        stored compressed in the decimal version, and the
  541.                        conversion is about 1:1 instead of 1:3.
  542.  
  543.                        Example: VENDOR_STRING=12345
  544.  
  545.                        This consumes about 5 characters in the decimal
  546.                        format.  VENDOR_STRING=abcd (valid hex characters)
  547.                        will also consume about 5 characters in the decimal
  548.                        format.
  549.  
  550.                        Knowing this, you might choose to "encode" information
  551.                        in the VENDOR_STRING in a numeric format.
  552.  
  553.                        This enhancement only applies to numbers <= 0xffffffff.
  554.                        For example, VENDOR_STRING=12345678901234 will require
  555.                        about 14*3 = 42 characters in the decimal format.
  556.  
  557.                        Note: Mixed case hex characters will not be stored
  558.                        efficiently.  VENDOR_STRING=abcD will take about 12
  559.                        decimal characters, instead of 5.
  560.  
  561.                        Feature names
  562.                        _____________
  563.  
  564.                        Avoid underscore '_' in feature names; it's hard
  565.                        to distinguish from a hypen '-'.  For example:
  566.  
  567.                        demo-prod_1a-10449-31786-63556-56877-09398-10373-137
  568.  
  569.                        This is hard to read, and if the user mixes the '-'
  570.                        and '_' up, the license will fail.
  571.  
  572.                        Since you also can't use '-' in a feature name, this
  573.                        means that feature names won't have any kind of
  574.                        separator.   Therefore, in the example, we
  575.                        suggest simply "prod1a".
  576.  
  577.                        ck=
  578.                        ___
  579.  
  580.                        Leave this optional attribute off.  The decimal
  581.                        format has its own built-in checksum.  This attribute
  582.                        will only make the decimal format longer.
  583.  
  584.                        Expiration dates
  585.                        ____________________
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.                                   - 10 -
  599.  
  600.  
  601.  
  602.                        For non-expiring licenses, use "permanent" or 1-jan-0
  603.                        as the expiration date.  Some older format, but still
  604.                        valid expiration dates are not supported in the
  605.                        decimal format.  For example: 3-mar-0 is
  606.                        functionally identical to permanent, but since the
  607.                        decimal format supports only "permanent" or "1-jan-0",
  608.                        3-mar-0 is unsupported.
  609.  
  610.                        Dates farther in the future require many decimals to
  611.                        represent.  Therefore 1-jan-9999 takes about 14
  612.                        characters while permanent requires about 1.
  613.  
  614.                Decimal format limitations:
  615.  
  616.                        The following items, which are legal in the
  617.                        "normal" license format, cannot be converted to decimal
  618.                        format:
  619.  
  620.                        o Very long FEATURE lines.  If a license is very long
  621.                          in the normal format (say > 100 characters), it
  622.                          would be much longer (up to three times longer) in
  623.                          the decimal format, defeating the purpose of a
  624.                          decimal format, which is to make licenses easier to
  625.                          type in.
  626.  
  627.                        o PACKAGE lines.  Normally, PACKAGE lines should
  628.                          be shipped as part of the product, so that the
  629.                          user doesn't have to enter these.
  630.  
  631.                        o FEATURE names including '-'.  These are technically
  632.                          unsupported characters, although some companies
  633.                          have used them.
  634.  
  635.                        o FEATURESET
  636.  
  637.                        o Vendor-defined hostids.  Only
  638.                                  hostids <= (HOSTID_VENDOR + 29)
  639.                          can be converted to decimal
  640.  
  641.  
  642.                Compatibility ==>
  643.  
  644.                        o It is possible to deliver a decimal format license to
  645.                          a customer with an application using pre-v6:
  646.  
  647.                          1) The customer must have a copy of lminstall (which
  648.                             is part of the new lmutil utilities).
  649.  
  650.                          2) They should run "lminstall -overfmt version", where
  651.                             version is the FLEXlm version of the application.
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.                                   - 11 -
  665.  
  666.  
  667.  
  668.                          3) The license must contain only attributes supported
  669.                             in that older version of FLEXlm.
  670.  
  671.                          lminstall will convert the decimal format to the
  672.                          correct format.
  673.  
  674.                        o Older applications will fail on decimal format licenses
  675.                          that have not been converted to the descriptive format.
  676.  
  677.                lminstall
  678.                _________
  679.  
  680.                This new lmutil utility is designed primarily for typing
  681.                in decimal format licenses to generate a readable format
  682.                license file.
  683.  
  684.                Usage: lminstall [-i {infile | -}] [-o outfile]                  [-overfmt {2, 3, 4, 5, 5.1, or 6}] [-odecimal]
  685.  
  686.                Normally, users will simply type lminstall.  The user is
  687.                first prompted for the name of the output license file.
  688.                The default name is today's date in yyyyddmm.lic format.
  689.                The file should be moved to your application's default
  690.                license file directory, if specified.  Otherwise, the user
  691.                can use xx_LICENSE_FILE to specify the directory where the
  692.                *.lic files are located.
  693.  
  694.                Decimal format input is verified by checksummed up entry of
  695.                each line.
  696.  
  697.                To finish entering, type Q on a line by itself, or enter
  698.                2 blank lines.
  699.  
  700.                If "infile" is a dash '-', it takes input from stdin.
  701.                When '-i' is used, default output is stdout; otherwise
  702.                if -o is not specified, lminstall prompts the user for
  703.                an output file name.
  704.  
  705.                lminstall As Conversion Tool:
  706.  
  707.                        lminstall can alternatively be used to convert
  708.                        licenses between decimal and readable format,
  709.                        and between different versions of FLEXlm license
  710.                        formats.
  711.  
  712.                        To convert from readable to decimal:
  713.  
  714.                                % lminstall -i infile -o outfile -odecimal
  715.  
  716.                        To convert to FLEXlm Version 2 format:
  717.  
  718.                                % lminstall -i infile -o outfile -verfmt 2
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.                                   - 12 -
  731.  
  732.  
  733.  
  734.                        Conversion errors are reported as necessary.
  735.  
  736.                lminstall has a limit of 400 lines of input.
  737.  
  738.                lminstall also changes "SERVER this_host" to the real
  739.                hostname, on either decimal or readable licenses.  It only
  740.                does this if lc_convert is run on the same hostid as appears
  741.                on the SERVER line, and does not do this for hostids of DEMO
  742.                or ANY.
  743.  
  744.  
  745.                lc_convert() to convert decimal format licenses
  746.                _______________________________________________
  747.  
  748.                This is an API for companies that want to provide their own
  749.                front-end for installing license files.  lc_convert() can be
  750.                used in combination with lc_check_key() to provide a
  751.                user-friendly front-end.
  752.  
  753.                lc_convert also changes "SERVER this_host" to the real
  754.                hostname, on either decimal or readable licenses.  It only
  755.                does this if lc_convert is run on the same hostid as appears
  756.                on the SERVER line, and does not do this for hostids of DEMO
  757.                or ANY.
  758.  
  759.                int lc_convert(
  760.                        LM_HANDLE *job,
  761.                        char *str,
  762.                        char **return_str,
  763.                        char **errors,
  764.                        int flag;
  765.  
  766.                The arguments are similar to lc_cryptstr():
  767.  
  768.                job:            From lc_init()
  769.                str:            Input file in a character buffer.  Normally
  770.                                this would be a decimal format license.
  771.                return_str:     Pointer to a char *.  If successful,
  772.                                upon return it points to a buffer that has the
  773.                                file in the desired format.
  774.                                Free this memory after use.  On PCs, we recommend
  775.                                using lc_free_mem().
  776.                errors:         Pointer to a char *.  If lc_convert returns -1, this
  777.                                is set to an explanatory message.
  778.                                If set, free this memory after use.  On PCs,
  779.                                we recommend using lc_free_mem().
  780.                flag:           LC_CONVERT_TO_READABLE or LC_CONVERT_TO_DECIMAL
  781.                                If any other value, lc_convert returns LM_BADPARAM.
  782.  
  783.                return values:  0 == success,
  784.                                LM_BADPARAM means a bad flag argument
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.                                   - 13 -
  797.  
  798.  
  799.  
  800.                                -1, there's a problem with input text, and error
  801.                                is set to an explanatory message.
  802.  
  803.                Shorter license-keys (Optional)
  804.                _______________________________
  805.  
  806.                The license-key is the set of hex digits which appear on every
  807.                FEATURE/INCREMENT/UPGRADE/PACKAGE line and makes the line secure.
  808.                For example:
  809.  
  810.                FEATURE f2 demo 1.0 1-jan-0 0 6E06CC47D2AB HOSTID=12345678
  811.                                              ^^^^^^^^^^^^
  812.                                              License-key
  813.  
  814.                Historically, license-keys were always 20 characters.
  815.                The license key is now 12 characters instead of 20, by
  816.                default, but 20-character keys can still be optionally
  817.                required.  20-characters license-keys are always accepted
  818.                while shorter license-keys are only accepted where allowed.
  819.  
  820.                This impacts licensing in 2 ways:
  821.  
  822.                        1) Instead of a 64-bit security key on each feature
  823.                           line, there's a 48-bit security key.  We believe
  824.                           that 48-bit security is sufficient for the vast
  825.                           majority of our customers.
  826.  
  827.                        2) The 20-character license-key included 4 characters
  828.                           for the license "start-date".  This is now
  829.                           optional, and is turned off by default in v6.  We
  830.                           believe that a start-date has little practical
  831.                           application for most companies and was rarely used.
  832.                           However, those desiring a start-date can now get
  833.                           one in 2 ways:
  834.  
  835.                                o There is now an optional "START=" attribute
  836.                                  for FEATURE/INCREMENT/UPGRADE lines.  This
  837.                                  is the preferred method for a start date.
  838.                                o You can continue to use a start-date in the
  839.                                  license key.  However, we have imposed the
  840.                                  requirement that a start-date in the license-key
  841.                                  *must* be accompanied by a 64-bit license-key.
  842.                                  (This is to remove any ambiguity about what
  843.                                  the key contains.)
  844.  
  845.                Here's how to turn on long license keys and/or license-key
  846.                start-dates in applications, license-generators and
  847.                vendor daemons:
  848.  
  849.                Application and license generators:
  850.  
  851.  
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.                                   - 14 -
  863.  
  864.  
  865.  
  866.                        long license keys:
  867.                        lc_set_attr(job, LM_A_LKEY_LONG, (LM_A_VAL_TYPE) 1);
  868.  
  869.                        hidden start-dates:
  870.                        lc_set_attr(job, LM_A_LKEY_START_DATE, (LM_A_VAL_TYPE) 1);
  871.  
  872.                        For lmcrypt and makekey, modify the source in machind.
  873.  
  874.                Vendor daemon (in machind/lsvendor.c):
  875.  
  876.                        ls_a_lkey_long = 1;             /* long license keys */
  877.                        ls_a_lkey_start_date = 1;       /* hidden start-dates */
  878.  
  879.                Compatibility ==>
  880.  
  881.                        o V6 applications (even those accepting short license-keys)
  882.                          will accept licenses with long license keys.
  883.  
  884.                        o Pre-v6 applications will not accept licenses with
  885.                          short license-keys.
  886.  
  887.                        o License generators (lmcrypt, makekey) will issue long
  888.                          license-keys when -verfmt is set to a version less than
  889.                          6.
  890.  
  891.                        o LM_BEHAVIOR_V5 (or older) in lm_code.h will set license-keys
  892.                          to be long and start-dates in the license-keys.  However,
  893.                          this can be overridden in the code with
  894.                          lc_set_attr(job, LM_A_LKEY_LONG, 0) and similarly
  895.                          for LM_A_LKEY_START_DATE, which must be set in the
  896.                          application, license-generator and vendor-daemon.
  897.  
  898.                        Existing companies can successfully use short license
  899.                        keys (and may very well want to), but must obey the
  900.                        following rules:
  901.  
  902.                                o If a site wants to use older products, then
  903.                                  you must use "-verfmt ..." to create a license
  904.                                  with long keys.  Both old and new products
  905.                                  will accept these licenses.
  906.  
  907.                                o If a site is completely converting to products
  908.                                  using FLEXlm v6, licenses with short keys can
  909.                                  be shipped.
  910.  
  911.                                o New customers can receive licenses with short
  912.                                  keys.
  913.  
  914.                New keywords:  "permanent" and "uncounted"
  915.                __________________________________________
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.                                   - 15 -
  929.  
  930.  
  931.  
  932.                permanent:      synonymous with an expiration date of "1-jan-0".
  933.  
  934.                uncounted:      synonymous with a user count of '0' which means
  935.                                that the license is uncounted by a server, and
  936.                                usually a demo license, or otherwise node-locked.
  937.  
  938.                Example:
  939.                        Old: FEATURE f2 demo 1.0 1-jan-0 0 6E06CC47D2AB                                 HOSTID=12345678
  940.                        New: FEATURE f2 demo 1.0 permanent uncounted 6E06CC47D2AB                                 HOSTID=12345678
  941.  
  942.                These new keywords are optional, but are generated automatically
  943.                by lmcrypt and makekey (unless -verfmt specifies an older format).
  944.  
  945.                Compatibility ==>
  946.  
  947.                        o These keywords will fail with older FLEXlm clients.
  948.                        o The older syntax is accepted by new clients.
  949.                        o lmcrypt and makekey with -verfmt older than v6 will
  950.                          not use these keywords.
  951.  
  952.                Licenses are optionally case-insensitive
  953.                ________________________________________
  954.  
  955.                The default behavior in v6 is that 100% of the license file
  956.                is case-insensitive, at least in FLEXlm's use of the file.
  957.  
  958.                Vendors that want case-insensitivity will have to make sure
  959.                their own use of any strings in optional license fields
  960.                (like VENDOR_STRING="...") is also case-insensitive.
  961.  
  962.                Companies that want case sensitivity can turn it on with
  963.  
  964.                        lc_set_attr(job, LM_A_LICENSE_CASE_SENSITIVE, (LM_A_VAL_TYPE)1);
  965.  
  966.                For the vendor daemon, in lsvendor.c, set
  967.  
  968.                        ls_a_license_case_sensitive = 1;
  969.  
  970.                Compatibility:
  971.  
  972.                        o LM_BEHAVIOR_V5 (in lm_code.h) will turn on case sensitivity.
  973.                          This can be overridden with
  974.  
  975.                                lc_set_attr(job, LM_A_LICENSE_CASE_SENSITIVE, 0);
  976.  
  977.                          which must be set in the application, license-generator
  978.                          and vendor-daemon.
  979.  
  980.                        o v6 applications will accept old, case-sensitive license
  981.                          files.
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.                                   - 16 -
  995.  
  996.  
  997.  
  998.                        o Pre-v6 applications will fail with licenses issued
  999.                          with case-insensitivity.
  1000.  
  1001.                        o Set -verfmt to a version older than 6 when issuing
  1002.                          licenses that must be used by older applications.
  1003.  
  1004.  
  1005.                Improved PACKAGE support
  1006.                ________________________
  1007.  
  1008.                PACKAGE lines can now be shipped in separate files that users
  1009.                do not edit.  Your checkout call can specify a license-file
  1010.                list, where one file has the PACKAGE lines.  Note that the
  1011.                server needs to be started with both files also.
  1012.  
  1013.                Compatibility ==>
  1014.  
  1015.                        o Older applications will fail with separate PACKAGE
  1016.                          files.  They must be combined with license in previous
  1017.                          versions.
  1018.  
  1019.                Server port numbers are no longer needed (single-server only)
  1020.                ________________________________________
  1021.  
  1022.                NOTE: This does not apply to 3-server redundant servers, which
  1023.                still require explicit port numbers on the SERVER line.
  1024.  
  1025.                The port number on the SERVER line is no longer required
  1026.                by FLEXlm.  A new SERVER line can look like this:
  1027.  
  1028.                        SERVER hostname 12345678
  1029.  
  1030.                How it works:
  1031.  
  1032.                        FLEXlm uses reserved port numbers 27000 through
  1033.                        27009.  The lmgrd, upon starting up, finds the
  1034.                        first available port number in this range, and
  1035.                        uses it.
  1036.  
  1037.                        Applications, connecting to a server, try all port
  1038.                        numbers in the range 27000-27009.
  1039.  
  1040.                Compatibility ==>
  1041.  
  1042.                        Older applications will require a port number on the
  1043.                        SERVER line.  However, using a number between 27000
  1044.                        and 27009 has the important advantage that new clients
  1045.                        do not need to know the server's port number
  1046.                        to successfully checkout a license. (More about this
  1047.                        later in the next item).
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.                                   - 17 -
  1061.  
  1062.  
  1063.  
  1064.                @hostname
  1065.                _________
  1066.  
  1067.                If a server is using a port number in the range 27000-27009,
  1068.                v6 clients can set their $LM_LICENSE_FILE variable to, simply,
  1069.                "@hostname".
  1070.  
  1071.                @localhost will always work if the server is running
  1072.                on the same system as the client.
  1073.  
  1074.                Compatibility:
  1075.  
  1076.                        Older applications will fail with @hostname.
  1077.  
  1078.                End-User Options File -- new default file
  1079.                _________________________________________
  1080.  
  1081.                In previous versions, the options file had to be specified
  1082.                on the VENDOR line in the license file.  Now the file
  1083.                can be called "vendor.opt", where "vendor" is the name of the
  1084.                vendor daemon, in any directory where a license is located.
  1085.                For example, assume the vendor name is "gsi" (Globetrotter's
  1086.                vendor daemon name). if lmgrd is started thus:
  1087.  
  1088.                        lmgrd -c /path/to/licenses/
  1089.  
  1090.                Then, the options file can be simply placed in
  1091.  
  1092.                        /path/to/licenses/gsi.opt
  1093.  
  1094.                And the license file does need to specify this, the
  1095.                gsi daemon will automatically find it upon startup.
  1096.  
  1097.                Compatibility ==>
  1098.  
  1099.                        Older vendor daemons will only find options files
  1100.                        specified in the license file.
  1101.  
  1102.                License in a buffer
  1103.                ___________________
  1104.  
  1105.                Normally a license path is a string that is a path to a
  1106.                file or directory.  It can also be a license.  For example
  1107.  
  1108.                        CHECKOUT(LM_RESTRICTIVE, "f1", "1.0", "path/to/license");
  1109.  
  1110.                FLEXlm will understand this string as a license if the
  1111.                string starts with "START_LICENSE0..",  and ends with
  1112.                "0ND_LICENSE":
  1113.  
  1114.                        CHECKOUT(LM_RESTRICTIVE, "f1", "1.0",
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.                                   - 18 -
  1127.  
  1128.  
  1129.  
  1130.                                "START_LICENSE0EATURE f1 demo 1.0                         permanent uncounted 50A35101C0F3 HOSTID=ANY                        VENDOR_STRING="Acme Inc"0ND_LICENSE");
  1131.  
  1132.                (This can be done with any mechanism for setting the license
  1133.                path, including LM_A_LICENSE_DEFAULT.)
  1134.  
  1135.                This can be used for a variety of purposes, however, a common
  1136.                use is licensing a library to a particular company.  In this
  1137.                case, it's common to use the VENDOR_STRING to include
  1138.                information that allows the library only to be used by that
  1139.                one company.
  1140.  
  1141.                For example, a company's libraries may be used to read a
  1142.                particular format file.  If the file included the name of the
  1143.                company that generated the files, the library could guarantee
  1144.                that the name in the file match the name in the
  1145.                VENDOR_STRING="" (by using lc_auth_data(), or
  1146.                LM_A_CHECKOUTFILTER).
  1147.  
  1148.                VENDOR_LICENSE_FILE
  1149.                ___________________
  1150.  
  1151.                Each ISV now has a unique environment variable that
  1152.                can be used to set the license-file path:
  1153.  
  1154.                        XXX_LICENSE_FILE
  1155.  
  1156.                where "XXX" is VENDOR_NAME in lm_code.h, all uppercase.
  1157.  
  1158.                For example, where Globetrotter's VENDOR_NAME is "gsi",
  1159.                GSI_LICENSE_FILE is the environment variable which would
  1160.                specify the license file path.
  1161.  
  1162.                The precedence rules for license path are:
  1163.  
  1164.                1) the default locations are:
  1165.                        Unix:    /usr/local/flexlm/licenses/license.dat
  1166.                        Windows: c:exlm
  1167.  
  1168.                2) If $LM_LICENSE_FILE or $VENDOR_LICENSE_FILE is set
  1169.                   the default location is ignored.
  1170.  
  1171.                3) If application sets LM_A_DISABLE_ENV, then environment
  1172.                   variables are ignored.  (Not recommended except in
  1173.                   special circumstances).
  1174.  
  1175.                4) The license location(s) can be set in the application with
  1176.                   LM_A_LICENSE_FILE or LM_A_LICENSE_FILE_PTR or
  1177.                   LM_LICENSE_DEFAULT.  If any of these are set, the default
  1178.                   location is ignored.  LM_A_LICENSE_DEFAULT is normally
  1179.                   recommended, since it automatically recognizes the
  1180.                   environment variables plus the indicated license path(s).
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.                                   - 19 -
  1193.  
  1194.  
  1195.  
  1196.                   LM_A_LICENSE_FILE and LM_A_LICENSE_FILE_PTR will set the
  1197.                   path if the environment variable is either not set or is
  1198.                   disabled.
  1199.  
  1200.                5) If both $VENDOR_LICENSE_FILE and $LM_LICENSE_FILE are set,
  1201.                   both are used, with $VENDOR_LICENSE_FILE used first.
  1202.  
  1203.                6) In the FLEXible API, the license file location cannot
  1204.                   be changed once the license file is read.  The license
  1205.                   file is not read until one of the following functions is
  1206.                   called:
  1207.  
  1208.                        lc_checkout
  1209.                        lc_get_config
  1210.                        lc_next_conf
  1211.                        lc_userlist
  1212.  
  1213.                   The only way to effectively change the license file
  1214.                   once it has been read, is to start a new job (with
  1215.                   lc_init().  That new job will read the new license
  1216.                   when required to.
  1217.  
  1218.                7) Finally, calling any of LM_A_LICENSE_* more than once overrides
  1219.                   the previous setting.  For example,
  1220.  
  1221.                        lc_set_attr(..., LM_A_LICENSE_DEFAULT, licensepath1);
  1222.                        lc_set_attr(..., LM_A_LICENSE_DEFAULT, licensepath2);
  1223.  
  1224.                        Only "licensepath2" is used.
  1225.  
  1226.                        lc_set_attr(..., LM_A_LICENSE_FILE, licensepath1);
  1227.                        lc_set_attr(..., LM_A_LICENSE_DEFAULT, licensepath2);
  1228.  
  1229.                        Again, only "licensepath2" is used.
  1230.  
  1231.                8) For the Simple and Trivial APIs, the rules are the
  1232.                   same, with the caveat that the license-path argument
  1233.                   behaves like LM_A_LICENSE_DEFAULT.
  1234.  
  1235.                Applications prompt for license file or server  (Windows only)
  1236.                ______________________________________________
  1237.  
  1238.                If, during checkout, the application can find no features for
  1239.                this vendor, either in a file, or from a server, the user is
  1240.                automatically asked for a license file, path to a license
  1241.                file, or the hostname that's running the license server.
  1242.                Then the checkout is automatically retried with this new
  1243.                information.
  1244.  
  1245.                Applications, mostly batch, which cannot have a dialog box
  1246.                like this appear, can turn this off with:
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.                                   - 20 -
  1259.  
  1260.  
  1261.  
  1262.                        lc_set_attr(job, LM_A_PC_PROMPT_FOR_FILE, (LM_A_VAL_TYPE) 0);
  1263.  
  1264.  
  1265.                Optional START=... start-date in license file
  1266.                _____________________________________________
  1267.  
  1268.                This new optional field can be used as a visible start-date.
  1269.                We do not normally recommend using start-dates, since they
  1270.                are of little practical use to most companies.  But for companies
  1271.                that want a start-date, it's preferable to have a visible
  1272.                start-date.
  1273.  
  1274.  
  1275.                LM_A_BEHAVIOR_VER
  1276.                _________________
  1277.  
  1278.                The overall behavior for all FLEXlm components can easily
  1279.                be set in lm_code.h.  In addition, there is an API for
  1280.                this.
  1281.  
  1282.                In the application:
  1283.  
  1284.                        lc_set_attr(job, LM_A_BEHAVIOR_VER,
  1285.                                (LM_A_VAL_TYPE)LM_BEHAVIOR_VX);
  1286.  
  1287.                where 'X' is 5_1, 5, 4, 3, or 2.
  1288.  
  1289.                For the vendor daemon, in lsvendor.c, set:
  1290.  
  1291.                        char *ls_a_behavior_ver = LM_BEHAVIOR_VX;
  1292.  
  1293.  
  1294.        Other Minor v6.0 Changes
  1295.        ________________________
  1296.  
  1297.  
  1298.                lc_init() and lp_checkout() checks for default ENCRYPTION_SEEDs
  1299.                _______________________________________________________________
  1300.  
  1301.                If the (non-"demo") ENCRYPTION_SEEDs are unchanged from the
  1302.                default numbers, or all the 8 hex digits are not filled in,
  1303.                LM_DEFAULT_SEEDS error is returned.  While not recommended,
  1304.                this error can be ignored.
  1305.  
  1306.                lc_feat_list() -- 'floating' arg changed to 'flags'
  1307.                ______________________________
  1308.  
  1309.  
  1310.                The 'floating' argument has been renamed flags.  We recommend
  1311.                setting the flags argument to LM_FLIST_ALL_FILES, to get all
  1312.                features from all license files in the license path.
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.                                   - 21 -
  1325.  
  1326.  
  1327.  
  1328.                We do not recommend using the floating-only feature from this
  1329.                function, as this may be discontinued in future versions.
  1330.  
  1331.                To list only floating features use: LM_FLIST_ONLY_FLOATING.
  1332.                For both arguments, OR them together:
  1333.  
  1334.                        LM_FLIST_ONLY_FLOATING | LM_FLIST_ALL_FILES
  1335.  
  1336.  
  1337.                lmutil takes -verbose argument
  1338.                _________________________________
  1339.  
  1340.                If set, all error messages print in long format.  This can
  1341.                make the output harder to read, but can be useful at times.
  1342.  
  1343.  
  1344.                New License File Attributes
  1345.                ___________________________
  1346.  
  1347.                START=...
  1348.  
  1349.                This is a visible start-date.  This functions the same as the
  1350.                old start-date, but the old start-date was hidden in the
  1351.                license-key.
  1352.  
  1353.                Globetrotter does not normally recommend the use of
  1354.                start-dates, since they provide little or no extra security.
  1355.  
  1356.                this_host
  1357.                _________
  1358.  
  1359.                Hostname on the SERVER line can now be this_host.  this_host
  1360.                will successfully allow checkouts in all conditions except
  1361.                one: where the application is reading the license file, and is
  1362.                running on a different system than the server.
  1363.  
  1364.                If the application is using port@host, or @host, or is running
  1365.                on the same system as the license server, checkouts work
  1366.                correctly.
  1367.  
  1368.                This is useful for delivering licenses.  lminstall
  1369.                automatically updates this_host to the real hostname upon
  1370.                installation.
  1371.  
  1372.  
  1373.                Improved security
  1374.                _________________
  1375.  
  1376.                Our policy is to give no description of security enhancements.
  1377.                Please don't ask.
  1378.  
  1379.  
  1380.  
  1381.  
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.                                   - 22 -
  1391.  
  1392.  
  1393.  
  1394.                Improved error message handling
  1395.                _______________________________
  1396.  
  1397.                Many new errors conditions have been added to improve
  1398.                the clarity of error messages, including:
  1399.  
  1400.                LM_DEFAULT_SEEDS        "ENCRYPTION_SEEDs are non-unique"
  1401.                                        Occurs when default encryption seeds are
  1402.                                        used in lm_code.h
  1403.                LM_LGEN_VER             "Attempt to generate license with
  1404.                                        incompatible attributes"
  1405.                                        Occurs with -verfmt, when a license
  1406.                                        illegal in the specified version is
  1407.                                        generated.
  1408.                LM_NOT_THIS_HOST        "Network connect to THIS_HOST failed"
  1409.                                        "The license file indicates THIS_HOST, and
  1410.                                        the server is not running on this host.
  1411.                                        If it's running on a different host,
  1412.                                        THIS_HOST should be changed to the correct
  1413.                                        host."
  1414.                LM_HOSTDOWN             "Server node is down or not responding"
  1415.                                        This new error condition indicates the
  1416.                                        server node is not running, or not responding.
  1417.                LM_VENDOR_DOWN          "The desired vendor daemon is down"
  1418.                                        New error condition indicating that lmgrd
  1419.                                        is running, but not the vendor daemon.
  1420.                LM_CANT_DECIMAL         "This FEATURE line can't be converted to
  1421.                                        decimal format"
  1422.                LM_BADDECFILE           "The decimal format license is typed
  1423.                                        incorrectly"
  1424.                                        This is detected via the decimal format
  1425.                                        checksum.
  1426.  
  1427.                lc_err_info
  1428.                ___________
  1429.  
  1430.                LM_ERR_INFO *lc_err_info(LM_HANDLE *job);
  1431.  
  1432.                lc_err_info returns a struct that has the following public
  1433.                elements describing the current error in the job:
  1434.  
  1435.                        int maj_errno;
  1436.                                This the flexlm error number, which is
  1437.                                a negative number between -1 and LM_LAST_ERRNO.
  1438.                        int min_errno;
  1439.                                The is the minor error number.  This allows
  1440.                                a support person with access to the FLEXlm
  1441.                                source code to pinpoint the location where
  1442.                                the error occurred, and thereby provide
  1443.                                improved support.
  1444.                        int sys_errno;
  1445.  
  1446.  
  1447.  
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.                                   - 23 -
  1457.  
  1458.  
  1459.  
  1460.                                This is the most recent system "errno".
  1461.                        LM_CHAR_PTR feature;
  1462.                                This is the name of the feature that the
  1463.                                error applies to.
  1464.                        LM_CHAR_PTR_PTR lic_files;
  1465.                                This is a null terminated list of char pointers
  1466.                                of the license files used when the error occurred.
  1467.                        LM_CHAR_PTR context;
  1468.                                This is a string which gives additional
  1469.                                information about the error.  Its contents
  1470.                                depends on the type of error.  Refer to
  1471.                                machind/lcontext.h for more information.
  1472.  
  1473.                This information allows applications to present error messages
  1474.                in any language and in any desired format, since there is
  1475.                no English-specific text in this struct.
  1476.  
  1477.                Alternative paragraph format error messages
  1478.                ___________________________________________
  1479.                Error messages can now optionally be presented in a long, more
  1480.                descriptive format.  The new format contains embedded newline
  1481.                characters, which some applications may not be able to handle,
  1482.                or may need special handling.
  1483.  
  1484.                Example:
  1485.  
  1486.                Invalid host
  1487.                 The hostid of this system does not match the hostid
  1488.                 specified in the license file
  1489.                Hostid:        12345678
  1490.                License path:  ./file1.lic:./file2.lic:./file3.lic
  1491.                FLEXlm error:  -9,9
  1492.  
  1493.                The format is:
  1494.  
  1495.                short-error-description
  1496.                optional-long-explanation [1-3 lines]
  1497.                optional-context-information
  1498.                License path:   path1:...:pathn
  1499.                FLEXlm error:   major, minor
  1500.  
  1501.                The default is now long error messages.  Applications
  1502.                will often find it useful to present the short error message
  1503.                first, and then long error message upon user request.  This
  1504.                can be done in the FLEXible API:
  1505.  
  1506.                        lc_set_attr(job, LM_A_LONG_ERRMSG, (LM_A_VAL_TYPE)0);
  1507.                        ....
  1508.                        /*error occurs*/
  1509.  
  1510.                        lc_perror(job);
  1511.  
  1512.  
  1513.  
  1514.  
  1515.  
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.                                   - 24 -
  1523.  
  1524.  
  1525.  
  1526.                        /* user requests long error message */
  1527.                        lc_set_attr(job, LM_A_LONG_ERRMSG, (LM_A_VAL_TYPE)1);
  1528.                        lc_perror(job);
  1529.  
  1530.                Note that this only works if another FLEXlm error doesn't
  1531.                occur in between, which would change the error condition and
  1532.                message.
  1533.  
  1534.                Not all error conditions have long explanations or
  1535.                context-sensitive information.
  1536.  
  1537.                Compatibility ==>
  1538.  
  1539.                        LM_BEHAVIOR_V5 sets error messages to short.  This
  1540.                        can be overridden with LM_A_LONG_ERRMSG.
  1541.  
  1542.                lc_check_key()
  1543.                ______________
  1544.  
  1545.                int lc_check_key(LM_HANDLE *job, CONFIG *conf, VENDORCODE *code)
  1546.  
  1547.                Return: 0 == success, <>0 = FLEXlm error number.
  1548.  
  1549.                This function is used to verify if the license-key in the
  1550.                CONFIG * 'conf' is valid.
  1551.  
  1552.                The 'conf' pointer comes from a call to lc_next_conf().
  1553.  
  1554.                'code' comes from lc_new_job() or the LM_CODE macro.
  1555.  
  1556.                $FLEXLM_DIAGNOSTICS
  1557.                __________________
  1558.  
  1559.                This was added in FLEXlm v4, although not documented until
  1560.                recently in the FLEXlm End-User Manual.
  1561.  
  1562.                Output is to stderr on Unix, and flexnnn.log on Windows, where
  1563.                "nnn" is the applications process ID (or flex_err.log in v5.0 for
  1564.                Windows).
  1565.  
  1566.                If set to '1', the FLEXlm error message is printed when
  1567.                a checkout fails.
  1568.  
  1569.                If set to '2', the feature name, number requested, queueing and
  1570.                dup-group masks are also printed.
  1571.  
  1572.                And, new in  v6, if set to '3', diagnostic information is
  1573.                printed upon successful checkout, including the license
  1574.                file location and the server name and port if applicable.
  1575.  
  1576.                Vendor daemon and lmgrd log large volume statistics
  1577.  
  1578.  
  1579.  
  1580.  
  1581.  
  1582.  
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588.                                   - 25 -
  1589.  
  1590.  
  1591.  
  1592.                ___________________________________________________
  1593.  
  1594.                If the server processes detect a large volume of messages, the
  1595.                volume is logged to the debug log, including the number of
  1596.                messages in the previous 6 hours, and the maximum number of
  1597.                messages per minute in those 6 hours.  This may be useful
  1598.                for detecting when end-user systems are approaching a practical
  1599.                limit for licensing activity.  When this limit is exceeded,
  1600.                users should split their licenses between more servers, and
  1601.                use license-file for clients to access are servers, thereby
  1602.                distributing the licensing load.
  1603.  
  1604.  
  1605.        v6.0 Changes from Previous versions
  1606.        ___________________________________
  1607.  
  1608.  
  1609.                lsvendor.c
  1610.                __________
  1611.  
  1612.                As is true with each version, lsvendor.c has changes.  If you
  1613.                have a modified lsvendor.c, you'll need to re-make those changes
  1614.                to the new lsvendor.c.  The compilation will fail with an older
  1615.                lsvendor.c
  1616.  
  1617.  
  1618.                l_extract_date takes a job handle
  1619.                _________________________________
  1620.  
  1621.                Applications and license generators should not require
  1622.                this function anymore, since lc_cryptstr() is now the
  1623.                preferred license generation function.  However, if your
  1624.                application calls l_extract_date(), the new prototype is
  1625.  
  1626.                        char * l_extract_date (LM_HANDLE_*, char * );
  1627.  
  1628.                The job is needed to determine if start-dates are
  1629.                hidden in the license-key.
  1630.  
  1631.                License File List
  1632.                _________________
  1633.  
  1634.                Various utilities and functions behave somewhat differently
  1635.                now that a license server can support multiple files.
  1636.  
  1637.                lc_ck_feats, lc_feat_set and lc_get_feats
  1638.                _________________________________________
  1639.  
  1640.                NOTE: The use of FEATURESET is strongly discouraged. The new v5
  1641.                SUPERSEDE license attribute is recommended.
  1642.  
  1643.  
  1644.  
  1645.  
  1646.  
  1647.  
  1648.  
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.                                   - 26 -
  1655.  
  1656.  
  1657.  
  1658.                These function only operates on one file at a time.
  1659.                To ensure that you're operating on the correct
  1660.                file, you can do the following before a call
  1661.                to any of these functions (probably in a separate
  1662.                job from the one used for lc_checkout()):
  1663.  
  1664.                        lc_set_attr(job, LM_A_DISABLE_ENV, 1);
  1665.                        lc_set_attr(job, LM_A_LICENSE_FILE_PTR, filepath);
  1666.  
  1667.  
  1668.                CHECKIN, lp_checkin and lc_checkin are now void functions
  1669.                _________________________________________________________
  1670.  
  1671.                No status is returned from these functions in v6.
  1672.  
  1673.  
  1674.                Unix: Default heartbeats improved
  1675.                _________________________________
  1676.  
  1677.                In previous versions, FLEXlm's use of SIGALRM
  1678.                interrupted I/O calls like read() and write().  In v6
  1679.                this is not the case, making FLEXlm integration easier.
  1680.                Internally, this is accomplished by using sigaction()
  1681.                with the SA_RESTART flag.
  1682.  
  1683.                lc_expire_days()
  1684.                ________________
  1685.  
  1686.                Previously, lc_expire_days did not presume "local time"
  1687.                and so the return value could be confusing.
  1688.                Now it presumes local time, and the return values
  1689.                are more precisely what the manual indicates.
  1690.  
  1691.                lc_shutdown()
  1692.                _____________
  1693.  
  1694.                Only shuts down the lmgrd if it's running the vendor daemon
  1695.                name in lc_init() call.
  1696.  
  1697.                LM_A_NO_DEMO not supported
  1698.                __________________________
  1699.  
  1700.                This attribute is being removed.  It had no real functionality
  1701.                in the past anyway.
  1702.  
  1703.                lc_lic_where()
  1704.                ______________
  1705.  
  1706.                We recommend replacing this call with
  1707.  
  1708.                        char **cpp;
  1709.  
  1710.  
  1711.  
  1712.  
  1713.  
  1714.  
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720.                                   - 27 -
  1721.  
  1722.  
  1723.  
  1724.                        lc_get_attr(job, LM_A_LF_LIST, &cpp)
  1725.  
  1726.                This gives the complete list of files.  Since v6 supports
  1727.                multiple files in a more thorough way than the past,
  1728.                lc_lic_where is no longer a reliable way of finding the
  1729.                license file.  The logic would need changing if this
  1730.                call is used, since it's a null-terminated array of
  1731.                strings, rather than just one string.
  1732.  
  1733.                lmcksum -pre_v6
  1734.                _______________
  1735.  
  1736.                lmcksum gives different checksums than older versions of
  1737.                lmcksum.  This is because the new lmcksum, by default,
  1738.                assumes that licenses are case-insensitive.  To get the same
  1739.                result as an older lmcksum, use 'lmcksum -pre_v6'.
  1740.  
  1741.                LM_A_ANY_ENABLED and LM_A_NO_DEMO removed
  1742.                _________________________________________
  1743.  
  1744.                These lc_set_attr() attributes were removed in this version.
  1745.                These attributes are 100% equivalent to simply not issuing
  1746.                this type of license.
  1747.  
  1748.  
  1749.                New Error Codes
  1750.                _______________
  1751.                LM_DEFAULT_SEEDS -91    ENCRYPTION_SEEDs are non-unique
  1752.  
  1753.                LM_SERVER_REMOVED -92   Feature removed during lmreread,
  1754.                                        or wrong SERVER line hostid
  1755.                LM_POOL          -93    This feature is available in a different
  1756.                                                license pool
  1757.                  This is a possible response to LM_A_VD_FEATURE_INFO request,
  1758.                  indicating that this INCREMENT line can be ignored, as it
  1759.                  has been pooled with another line.
  1760.                LM_LGEN_VER      -94    Attempt to generate license with incompatible
  1761.                                                attributes
  1762.                  Occurs with -verfmt arguments to lmcrypt or makekey, or
  1763.                  -overfmt with lminstall.
  1764.                LM_NOT_THIS_HOST -95    Network connect to THIS_HOST failed
  1765.                  When "this_host" is used as a hostname.  Replace this_host with
  1766.                  a real hostname to resolve this error.
  1767.                LM_HOSTDOWN      -96    Server node is down or not responding
  1768.                  Indicates the whole system is not up, not just the lmgrd process.
  1769.                LM_VENDOR_DOWN   -97    The desired vendor daemon is down
  1770.                  Indicates lmgrd is running, but not the vendor daemon.
  1771.                LM_CANT_DECIMAL  -98    The FEATURE line can't be converted to
  1772.                                                decimal format
  1773.                LM_BADDECFILE    -99    The decimal format license is typed
  1774.                                                incorrectly
  1775.  
  1776.  
  1777.  
  1778.  
  1779.  
  1780.  
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.                                   - 28 -
  1787.  
  1788.  
  1789.  
  1790.                LM_REMOVE_LINGER -100   Cannot remove a lingering license
  1791.                LM_RESVFOROTHERS -101   All licenses are reserved for others
  1792.  
  1793.  
  1794.        v6.0 Minor enhancements
  1795.        _______________________
  1796.  
  1797.                REPORTLOG updates
  1798.                _________________
  1799.  
  1800.                Report logs are now "flushed" once a minute.  In versions 5.0
  1801.                and v5.1x, report logs were only updated after a large
  1802.                number of transactions, so reporting on running vendor daemons
  1803.                would often not contain current information.
  1804.  
  1805.                UPGRADE of uncounted FEATURE/INCREMENT supported
  1806.                ________________________________________________
  1807.  
  1808.                If the UPGRADE line appears, it will have no effect unless
  1809.                there's a corresponding FEATURE/INCREMENT line prior to the
  1810.                UPGRADE line.  This is useful when you want to sell a product
  1811.                "Upgrade" and want to require that the user already own the
  1812.                basic product at the older version level.
  1813.  
  1814.                VENDOR line supports embedded spaces for paths
  1815.                ______________________________________________
  1816.  
  1817.                The VENDOR line optionally specifies paths to the vendor
  1818.                daemon and the end-user options file.  If surrounded by
  1819.                quotes ("), these paths can now contain embedded spaces.
  1820.  
  1821.                Example:  VENDOR demo "C:PROGRAM FILES
  1822.  
  1823.                Note that older vendor daemons and/or lmgrds will not work
  1824.                with paths with quotes.
  1825.  
  1826.                lmutil output format changes
  1827.                ____________________________
  1828.  
  1829.                As with all new FLEXlm versions, the output format
  1830.                of the FLEXlm utilities have been modified and
  1831.                enhanced from previous versions.
  1832.  
  1833.  
  1834.                lmdown and lmreread take new "-vendor name" arg
  1835.                _______________________________________________
  1836.  
  1837.                        lmdown [-vendor name]
  1838.                        lmreread [-vendor name]
  1839.  
  1840.                If "-vendor name" appears (where name is the vendor daemon
  1841.  
  1842.  
  1843.  
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852.                                   - 29 -
  1853.  
  1854.  
  1855.  
  1856.                name), the function only applies to that one vendor daemon.
  1857.  
  1858.                You can also stop and restart a single vendor daemon:
  1859.  
  1860.                        % lmdown -vendor gsi
  1861.                        [perhaps you would edit the end-user options file here...]
  1862.                        % lmreread -vendor gsi
  1863.  
  1864.                The lmreread command restarts the gsi vendor daemon.
  1865.  
  1866.                lmdown -vendor name will not shutdown the lmgrd process, even
  1867.                if there are no vendor daemons left.
  1868.  
  1869.                With these 2 changes, it is now much easier to run a single
  1870.                lmgrd for many license files from many vendors.
  1871.  
  1872.  
  1873.                lc_cryptstr()/LM_A_MAX_LICENSE_LEN
  1874.                makekey, lmcrypt and lminstall take -maxlen arg
  1875.                _______________________________________________
  1876.  
  1877.                You can now control the length of license file output lines.
  1878.                This is to improve email of license files.
  1879.  
  1880.                makekey lmcrypt and lminstall all take -maxlen 'n'
  1881.                The default is 70 characters, which is used when -maxlen
  1882.                is not specified, or is set to 0.
  1883.                If maxlen is -1, then lines are never wrapped with line-continuation
  1884.                characters.
  1885.  
  1886.                You can also set this in C with the FLEXible API, with
  1887.                lc_set_attr(job, LM_A_MAX_LICENSE_LEN, (LM_A_VAL_TYPE)n);
  1888.  
  1889.        New v6.0 Examples
  1890.        _________________
  1891.  
  1892.                flexlm/v6.0/examples/advanced/exinstal.c:
  1893.  
  1894.                        This is a sample license installer.  It checks syntax
  1895.                        and license-keys, and creates a license file in the
  1896.                        indicated directory.  In converts decimal to readable
  1897.                        format, if necessary, and formats the license.
  1898.  
  1899.                flexlm/v6.0/examples/advanced/get_dir.c:
  1900.  
  1901.                        Can be used to locate the license file.
  1902.                        It finds the directory where the program resides.
  1903.  
  1904.                flexlm/v6.0/examples/advanced/licstring.c:
  1905.  
  1906.                        Example using license in a buffer, and converting
  1907.  
  1908.  
  1909.  
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.                                   - 30 -
  1919.  
  1920.  
  1921.  
  1922.                        single FEATURE lines to CONFIG structs.
  1923.  
  1924.  
  1925.        Version V6.1 Enhancements
  1926.        _________________________
  1927.  
  1928.                Phase 1 of the v6.1 security enhancements is recommend for all
  1929.                ISVs.  Trivial and Simple API customers get this
  1930.                automatically.  For the FLEXible API there's one API change
  1931.                added for this:  lc_new_job().
  1932.  
  1933.                In addition, there's an optional security enhancement, Phase 2,
  1934.                available for ISVs that want the highest level of security.
  1935.                Phase 2 is not needed or necessarily recommended for most
  1936.                ISVs.  Unfortunately, licenses generated with the Phase 2
  1937.                enhancement are incompatible with all previous licenses, making
  1938.                this a dramatic change, and suitable only for companies new to
  1939.                FLEXlm, or those willing to undergo this change for the
  1940.                additional security.
  1941.  
  1942.                Phase 1: lm_new.o and lc_new_job()
  1943.                __________________________________
  1944.  
  1945.                lm_new.o/lm_new.obj:
  1946.                ________________________________
  1947.  
  1948.                lm_new.o adds additional security to FLEXlm applications.  It's
  1949.                used by all Simple and Trivial API applications, as well as
  1950.                Flexible API applications that use lc_new_job().  lm_new.o is
  1951.                built automatically during installation or comes pre-built with
  1952.                evaluation kits.  See machind/makefile (Unix) or
  1953.                flex_sdki86_n3makefile (Windows) to see how lm_new.o
  1954.                (lm_new.obj) is built.  lm_new.o must be rebuilt when anything
  1955.                in lm_code.h changes.
  1956.  
  1957.                NOTE: If your application link fails with an error about "l_n36_buf",
  1958.                the problem is that you need to add lm_new.o (or lm_new.obj)
  1959.                to your link line.
  1960.  
  1961.  
  1962.                lc_new_job
  1963.                __________
  1964.  
  1965.                lc_new_job() replaces lc_init() for executables shipped to
  1966.                customers.  Continue using lc_init() for license-generators,
  1967.                such as lmcrypt and makekey, and any other internally used
  1968.                applications.
  1969.  
  1970.                To use lc_new_job():
  1971.  
  1972.                        1) Replace the LM_CODE macro, with a VENDORCODE declaration:
  1973.  
  1974.  
  1975.  
  1976.  
  1977.  
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.                                   - 31 -
  1985.  
  1986.  
  1987.  
  1988.                                VENDORCODE code;
  1989.  
  1990.                        2) Replace lc_init() with lc_new_job.  Except for the
  1991.                           2nd argument, the arguments are the same.  The 2nd
  1992.                           argument is currently unused, but we recommend using a
  1993.                           0 for security reasons (instead of VENDOR_NAME).
  1994.  
  1995.                        3) The new makefile builds an object file called lm_new.o
  1996.                           on Unix, and lm_new.obj on Windows.  You must add this
  1997.                           file when linking your applications.  Evaluation
  1998.                           kits come with a pre-built lm_new.o, which cannot
  1999.                           be rebuilt.
  2000.  
  2001.  
  2002.                For the Windows platforms (i86_n3 and alpha_n3) it is now necessary
  2003.                to build your vendor daemons linked statically to the lmgr326s.lib.
  2004.                The vendor daemon is built automatically in i86_n3 or alpha_n3
  2005.                directories.  Please refer to the included makefile for further
  2006.                information about how the vendor daemon is built.
  2007.  
  2008.                Also for the Windows platforms, the lc_new_job() function is not
  2009.                implemented in the DLL version, lmgr326a.dll.  We recommend using
  2010.                the static library whenever possible to increase the security.
  2011.                If this is not possible, the benefits of lc_new_job() can be
  2012.                achieved by
  2013.  
  2014.                        1) Remove the LM_CODE macro.
  2015.                        2) Build the VENDORCODE argument to lc_init() and
  2016.                           lc_checkout() at runtime.
  2017.  
  2018.                Following is an example of code that can be used for step
  2019.                #2:
  2020.  
  2021.                        VENDORCODE *code;
  2022.                        unsigned long seed1 = 0x11111111 ^ VENDOR_KEY5;
  2023.                        unsigned long seed2 = 0x22222222 ^ VENDOR_KEY5;
  2024.                        unsigned long vkey1 = 0xaaaaaaaa;
  2025.                        unsigned long vkey2 = 0xbbbbbbbb;
  2026.                        unsigned long vkey3 = 0xcccccccc;
  2027.                        unsigned long vkey4 = 0xdddddddd;
  2028.                        /*...*/
  2029.  
  2030.  
  2031.                        code = (VENDORCODE *)malloc(sizeof(VENDORCODE));
  2032.                        code->type = VENDORCODE_5
  2033.                        code->data[0] = seed1;
  2034.                        code->data[1] = seed2;
  2035.                        code->keys[0] = key1;
  2036.                        code->keys[1] = key2;
  2037.                        code->keys[2] = key3;
  2038.                        code->keys[3] = key4;
  2039.  
  2040.  
  2041.  
  2042.  
  2043.  
  2044.  
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050.                                   - 32 -
  2051.  
  2052.  
  2053.  
  2054.                You may also want to take additional steps to keep these
  2055.                numbers obscure in your binary, by declaring in different
  2056.                locations, changing order, etc.
  2057.  
  2058.                If you are using the Trivial or Simple FLEXlm api's and linking
  2059.                to the DLL (lmgr326a.dll), you will need to add the compiler flag
  2060.                "FLEXLM_DLL":
  2061.  
  2062.                        cl ... /DFLEXLM_DLL ...
  2063.  
  2064.                Phase 2
  2065.                _______
  2066.  
  2067.                Phase 2 is for companies new to FLEXlm, or those willing
  2068.                to redistribute licenses and products to all customers.
  2069.                Phase 2 is not needed or necessarily recommended for most
  2070.                companies.
  2071.  
  2072.                For security reasons, instructions for implementing Phase 2 are
  2073.                available only upon request by supported ISVs, by email from
  2074.                support@globes.com.
  2075.  
  2076.        Other v6.1 Changes
  2077.        __________________
  2078.  
  2079.                Windows:  The static libraries are now called lmgr.lib (with /MT
  2080.                switch) and lmgr_md.lib (with /MD switch).
  2081.  
  2082.                Most companies will use lmgr.lib.
  2083.  
  2084.        Java Security Note
  2085.        __________________
  2086.  
  2087.                There are special security considerations for companies using
  2088.                FLEXlm for Java, since Java applications can be relatively
  2089.                easily decompiled.
  2090.  
  2091.                For this reason we recommend that licenses and license
  2092.                servers for Java applications be different than non-Java
  2093.                applications.  Otherwise, a hacker that is able to compromise
  2094.                security through a Java application would have similar
  2095.                access to non-Java applications.
  2096.  
  2097.                In particular, we recommend that Java applications should use a
  2098.                different vendor-daemon name, and different ENCRYPTION_SEEDs.
  2099.  
  2100.        Linux Gnu-Libc (RedHat Linux)
  2101.        _____________________________
  2102.  
  2103.                Linux has introduced serious compatibility problems with each
  2104.                new release.  We now have the following Linux directories:
  2105.  
  2106.  
  2107.  
  2108.  
  2109.  
  2110.  
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116.                                   - 33 -
  2117.  
  2118.  
  2119.  
  2120.                i86_l1
  2121.                i86_g2
  2122.                i86_r6
  2123.  
  2124.                Here are the known rules to date regarding these releases:
  2125.  
  2126.                i86_l1 can be used with "libc" on Caldera Linux v1 and v2, and
  2127.                Redhat Linux v4.  Binaries and objects for these OSs will *not*
  2128.                run or link correctly on any later versions of these OSs.
  2129.  
  2130.                i86_g2 should be used with glibc 2.0, which is used on Redhat v5.
  2131.                The binaries linked on Redhat v5 will run correctly on Redhat v6, and
  2132.                we have been told should continue to run correctly on all future
  2133.                Redhat releases.
  2134.  
  2135.                i86_r6 is required to for products linked on Redhat v6, which will
  2136.                not run on Redhat v5, and should run on all future versions of
  2137.                Redhat.   i86_r6 *may* work correctly on other Linux GLibc 2.1
  2138.                OSs.
  2139.  
  2140.  
  2141.        Platform Specific Changes
  2142.        _________________________
  2143.  
  2144.                SGI
  2145.                ___
  2146.  
  2147.                There are now 3 sgi directories:
  2148.  
  2149.                        sgi32_u5
  2150.                        sgi32_u6
  2151.                        sgi64_u6
  2152.  
  2153.                These correspond more correctly to the Globetrotter platform
  2154.                naming conventions than previous versions.
  2155.  
  2156.                To build on Irix 6, please use the following chart:
  2157.  
  2158.                        -n32 -mips3:    sgi32_u6 default
  2159.                        -n32 -mips4:    sgi32_u6, use liblmgr_n32mips4.a
  2160.                                        to link applications.
  2161.                        -64 -mips3:     sgi64_u6 default
  2162.                        -64 -mips4:     sgi64_u6, use liblmgr_64mips4.a
  2163.                                        to link applications.
  2164.                        -o32:           Use sgi32_u5 with 'make o32'.
  2165.  
  2166.        Unix:  liblmgrd.a and liblmutil.a are no longer shipped
  2167.        _______________________________________________________
  2168.  
  2169.                This change is in effect with v6.0i.  These libraries were
  2170.                used to build lmgrd and lmutil.  Since the latest lmgrd and
  2171.  
  2172.  
  2173.  
  2174.  
  2175.  
  2176.  
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.                                   - 34 -
  2183.  
  2184.  
  2185.  
  2186.                lmutil can always be downloaded from our ftp site, these
  2187.                libraries are no longer needed.  This also reduces the download
  2188.                time.
  2189.  
  2190.  
  2191.        Platform Specific Notes:
  2192.        ________________________
  2193.  
  2194.                UNIX
  2195.                ____
  2196.  
  2197.  
  2198.  
  2199.                alpha_u3
  2200.                ________
  2201.  
  2202.                    uname -a:   OSF1 zippy V3.2 17 alpha
  2203.                    CC:         cc -std1
  2204.                    NOTE:  alpha_u1 is discontinued.  This only means that
  2205.                           we no longer support v1 and v2 of the OS, and
  2206.                           virtually no one uses those OS versions.  Alpha_u3
  2207.                           fully supports Alpha DEC Unix 3 and 4.
  2208.  
  2209.                decs_u4
  2210.                _______
  2211.  
  2212.                    uname -a:   ULTRIX newport 4.2 0 RISC
  2213.                    CC:         /bin/cc -DPMAX -DULTRIX -DMIPS
  2214.  
  2215.  
  2216.                hp300_u8
  2217.                ________
  2218.  
  2219.                    uname -a:   HP-UX agent86 B.08.00 A 9000/375 080009060992
  2220.                    CC:         /bin/cc
  2221.                    link flags: -lBSD
  2222.  
  2223.                hp700_u9
  2224.                ________
  2225.  
  2226.                    uname -a:   HP-UX oglobes A.09.01 A 9000/715 2005771344
  2227.                    CC:         /bin/cc -DHP -DHP700  -Aa -D_HIUX_SOURCE                                 -D_HPUX_SOURCE +DA1.0 +DS1.0
  2228.                                (replace HIUX with HPUX on an HP system)
  2229.                    Hostid note:  we no longer recommend using ethernet address
  2230.                                as a hostid.
  2231.  
  2232.                hp64_u11
  2233.                ________
  2234.  
  2235.                    uname -a:   HP-UX hp9000k B.11.00 A 9000/889 81601311
  2236.                    CC:         /usr/bin/cc -DHP -DHP700  -DHP64 -Aa -D_HIUX_SOURCE                                 -D_HPUX_SOURCE +DA2.0W +DS2.0W
  2237.  
  2238.  
  2239.  
  2240.  
  2241.  
  2242.  
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248.                                   - 35 -
  2249.  
  2250.  
  2251.  
  2252.                i86_b2
  2253.                ______
  2254.  
  2255.                    uname -a:   BSD/OS bsdi.globes.com 2.1 BSDI BSD/OS 2.1 Kernel #1:
  2256.                                Mon Jun 10 15:58:19 MDT 1996
  2257.                                polk@demiurge.BSDI.COM:/usr/src/sys/compile/GENERIC
  2258.                                i386
  2259.                    CC:         /usr/ucb/cc
  2260.  
  2261.                    NOTE:       The hostid is the ethernet address.
  2262.  
  2263.                i86_d4
  2264.                ______
  2265.  
  2266.                    uname -a:   dgux dgbig R4.11 generic AViiON Pentium
  2267.                    CC:         /bin/cc, actually, /usr/opt/sdk/sde/ix86dgux/usr/bin
  2268.  
  2269.                    NOTE:       hostid comes from /dev/net/*.  By default these files
  2270.                                are only readable by root.  We recommend changing the
  2271.                                perms to:
  2272.  
  2273.                                        # chmod 644 /dev/net/*
  2274.  
  2275.                i86_g2
  2276.                ______
  2277.  
  2278.                    uname -a:   Linux redhat.globes.com 2.0.34 #1 Fri May 8 16:05:57
  2279.                                EDT 1998 i586 unknown
  2280.  
  2281.                    CC:         /usr/bin/cc
  2282.  
  2283.                    Note:       This is Linux with Gnu-libc, and runs on redhat v5.x
  2284.                                and any other Linux using Gnu-libc.
  2285.  
  2286.                    To obtain ethernet hostid (same as Linux, i86_l1):
  2287.  
  2288.                        /sbin/ifconfig eth0
  2289.  
  2290.                    Convert the hardward address as follows:
  2291.  
  2292.                        From: HWaddr 00:40:05:16:E5:25
  2293.                        To:   00400516E525
  2294.  
  2295.  
  2296.                i86_l1
  2297.                ______
  2298.  
  2299.                    uname -a:   Linux skyline.globes.com 1.2.13 #1 Mon Jan 15 12:33:32                                 MST 1996 i586
  2300.                    CC:         /usr/bin/cc
  2301.                    cc -v:      Reading specs from                         /usr/lib/gcc-lib/i486-linux/2.7.0/specs
  2302.                                gcc version 2.7.0
  2303.  
  2304.  
  2305.  
  2306.  
  2307.  
  2308.  
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.                                   - 36 -
  2315.  
  2316.  
  2317.  
  2318.                    IMPORTANT NOTE:  v5+ uses ethernet address as a hostid,
  2319.                    which is relatively secure.  v4 used the 'hostid' command,
  2320.                    which was not secure.  To obtain the ethernet address, type:
  2321.  
  2322.                        /sbin/ifconfig eth0
  2323.  
  2324.                    Convert the hardward address as follows:
  2325.  
  2326.                        From: HWaddr 00:40:05:16:E5:25
  2327.                        To:   00400516E525
  2328.  
  2329.                    V5+ lmhostid will report ethernet address by default.  v4
  2330.                    will report 'hostid'.  Both types of hostid are acceptable
  2331.                    to version 5 clients and servers.
  2332.  
  2333.                    lmhostid, or lmhostid -ether
  2334.                        -- obtains the ethernet address (secure)
  2335.                    lmhostid -long
  2336.                        -- obtains the output from the 'hostid' command
  2337.                           (not secure)
  2338.  
  2339.                i86_u2
  2340.                ______
  2341.  
  2342.                    uname -a:   UNIX_SV rolm 4.2MP 2.1 i386 x86at
  2343.                    CC:         /usr/ccs/bin/cc
  2344.  
  2345.                i86_x5  (Solaris on Intel)
  2346.                ______
  2347.  
  2348.                    uname -a:   SunOS sunpc 5.4 generic i86pc i386
  2349.                    CC:         /opt/SUNWspro/bin (version 3.0)
  2350.  
  2351.                i86_rl2 (Lynx realtime OS)
  2352.                _______
  2353.  
  2354.                    uname -a:   LynxOS lynx 2.5.0 012797-G i386
  2355.                    CC:         /bin/cc
  2356.  
  2357.                    The server is limited to serving 60 clients by default.  If a
  2358.                    a server is being run on Lynx, we strongly recommend compiling
  2359.                    the kernel for a larger number of file descriptors per process
  2360.                    to avoid this small limit of clients.
  2361.  
  2362.                    To reconfigure the number of file descriptors:
  2363.                    1)  root:
  2364.                    2) cd /sys/lynx.os
  2365.                    3) vi uparam.h
  2366.                    4) USR_NFDS -- change to 256 (or higher if necessary).
  2367.                    5) make install
  2368.  
  2369.  
  2370.  
  2371.  
  2372.  
  2373.  
  2374.  
  2375.  
  2376.  
  2377.  
  2378.  
  2379.  
  2380.                                   - 37 -
  2381.  
  2382.  
  2383.  
  2384.                moto_u4
  2385.                _______
  2386.  
  2387.                    uname -a:   UNIX_System_V motosvr4 4.0 R40V4.2 m88k mc88100
  2388.                    CC:         /bin/cc
  2389.                    link flags: -lsocket -lnsl
  2390.  
  2391.                nec_u2
  2392.                ______
  2393.  
  2394.                    uname -a:   UNIX_System_V nec 4.0 2 R3000 r3000
  2395.                    CC:         /bin/cc
  2396.                    link flags: -lsocket -lnsl
  2397.                    /usr/necbin/uversion:       Release6.2 Rev01 - EWS4800/220 - WS
  2398.  
  2399.                ppc_u4 (Power PC AIX v4)
  2400.                ______
  2401.  
  2402.                    uname -a:   AIX aixv4 1 4 00FFFFFF4D00
  2403.                    CC:         /bin/cc with -D_BSD -D_BSD_INCLUDES
  2404.                    link flags: -lbsd
  2405.                    Hostid is the same as rs6000.
  2406.  
  2407.                rs6000_u3
  2408.                _________
  2409.  
  2410.                    uname -a:   AIX rs6000 1 3 000276513100
  2411.                    CC:         /bin/cc -D_BSD -D_BSD_INCLUDES
  2412.                    link flags: -lbsd
  2413.  
  2414.                sco_u3
  2415.                ______
  2416.  
  2417.                    uname -a:   SCO_SV sco 3.2 2 i386
  2418.                    uname -X:
  2419.                                System = sco
  2420.                                Node = sco
  2421.                                Release = 3.2v4.2
  2422.                                KernelID = 94/02/14
  2423.                                Machine = i80486
  2424.                                BusType = ISA
  2425.                                Serial = 2BK004210
  2426.                                Users = 2-user
  2427.                                OEM# = 0
  2428.                                Origin# = 1
  2429.                                NumCPU = 1
  2430.  
  2431.                                The important thing here is 3.2v4.2. FLEXlm v6.0
  2432.                                will fail on earlier versions of SCO.
  2433.  
  2434.                    CC:         /bin/cc -Dsco
  2435.  
  2436.  
  2437.  
  2438.  
  2439.  
  2440.  
  2441.  
  2442.  
  2443.  
  2444.  
  2445.  
  2446.                                   - 38 -
  2447.  
  2448.  
  2449.  
  2450.                    link flags: scoinfo.o -lsocket
  2451.  
  2452.                    IMPORTANT NOTE:  v4.1 FLEXlm was built on an older OS:
  2453.                                     Release = 3.2v2.0
  2454.                                     KernelID = 90/10/01
  2455.  
  2456.                sgi32_u5
  2457.                ______
  2458.  
  2459.                    uname -a:   IRIX indy 5.2 02282013 IP12 mips
  2460.                    CC:         /bin/cc
  2461.  
  2462.                sgi64_u6
  2463.                ________
  2464.  
  2465.                    uname -a:   IRIX64 challenger 6.1 07121831 IP26 mips
  2466.                    CC:         /bin/cc -64 -mips3
  2467.  
  2468.                    This was called sgir8_u6 in previous versions.  It's been
  2469.                    renamed to reflect the fact that it's 64-bit.
  2470.  
  2471.                sgi64_u6
  2472.                ________
  2473.  
  2474.                    uname -a:   IRIX64 challenger 6.1 07121831 IP26 mips
  2475.                    CC:         /bin/cc -n64 -mips3
  2476.  
  2477.  
  2478.                sun4_u4
  2479.                _______
  2480.  
  2481.                    uname -a:   SunOS ss 4.1.2 2 sun4c
  2482.                    CC:         /bin/cc
  2483.  
  2484.                    sun4_u4 is now built on a 4.1.2 system.  This means that it
  2485.                    will no longer work with 4.0.3 systems.
  2486.  
  2487.                sun4_u5
  2488.                _______
  2489.  
  2490.                    uname -a:   SunOS backstage 5.1 Generic sun4m sparc
  2491.                    CC:         /opt/SUNWspro/bin/cc
  2492.  
  2493.        Bugs fixed in v6.1g
  2494.        ___________________
  2495.  
  2496.                Bug  Platform   Description [Module]
  2497.                ___________________________
  2498.                P4211 All       Security enhancement. [Vendor daemon]
  2499.                P4225 All       Client core dumps when COMPONENT is removed via
  2500.                                SUPERSEDE [Client]
  2501.  
  2502.  
  2503.  
  2504.  
  2505.  
  2506.  
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512.                                   - 39 -
  2513.  
  2514.  
  2515.  
  2516.                P4255 All       vendor daemon with PLATFORMS= in license can
  2517.                                core dump with lmreread.
  2518.                P4258 All       Security issue addressed. [Vendor daemon]
  2519.                P4130 All       ls_outfilter doesn't allow filtering different pools.
  2520.                                If you use ls_outfilter, the behavior may change, and
  2521.                                we recommend contacting Globetrotter support for
  2522.                                further information.
  2523.                                [Vendor daemon]
  2524.  
  2525.  
  2526.  
  2527.        Bugs fixed in v6.1f
  2528.        ___________________
  2529.  
  2530.                Bug  Platform   Description [Module]
  2531.                ___________________________
  2532.                P4067 All       If you UPGRADE more than the INCREMENT count,
  2533.                                unlimited licenses become available [Vendor daemon]
  2534.                P4069 HP        HP Failed with redundant servers [Vendor daemon]
  2535.  
  2536.        Bugs fixed in v6.1e
  2537.        ___________________
  2538.  
  2539.                Bug  Platform   Description [Module]
  2540.                ___________________________
  2541.  
  2542.                P4000 All       port@host, v6 vendor daemon, pre-v6 client can fail
  2543.                                [vendor daemon]
  2544.  
  2545.        Bugs fixed in v6.1d
  2546.        ___________________
  2547.  
  2548.                Bug  Platform   Description [Module]
  2549.                ___________________________
  2550.                P3631 All       Using USE_SERVER, failed checkout can get BADFILE error
  2551.                                instead of the real error. [Client library]
  2552.                P3788 All       USER/HOST_BASED not checked on lmreread [Vendor daemon]
  2553.                P3869 All       MAX_OVERDRAFT didn't work. [Vendor daemon]
  2554.                P3876 All       Package with PLATFORMS= or SUPERSEDE=, lc_free_job can
  2555.                                core dump.  [Client library]
  2556.                P3947 Windows   CANTWRITE returned instead of CANTCONNECT
  2557.                                [Client library]
  2558.                P3948 All       SUPERSEDE a PACKAGE can core dump. [Vendor daemon]
  2559.                P3949 All       Server doesn't verify START= [Vendor daemon]
  2560.                P3998 Windows   lmdiag can erroneously complain about license
  2561.                                syntax errors. [lmutil]
  2562.                P4038 Unix      Client can core dump if linked with a version of X
  2563.                                that uses signal() instead of sigaction().
  2564.                                [Client library]
  2565.  
  2566.        Bugs fixed in v6.1c
  2567.  
  2568.  
  2569.  
  2570.  
  2571.  
  2572.  
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578.                                   - 40 -
  2579.  
  2580.  
  2581.  
  2582.        ___________________
  2583.  
  2584.                Bug  Platform   Description
  2585.                ___________________________
  2586.                P3371 All       makekey.c won't compile with strict ANSI C compiler.
  2587.                P3496 Unix      lmstrip.c corrupts a C++ binary with munged
  2588.                                names longer than 2k.
  2589.                P3513 sun4_u5   replaced sys_errlist[] and getdomainname() for
  2590.                                Solaris compliance.
  2591.                P3537 i86_n3    genlic32.exe doesn't save all advanced settings.
  2592.                P3538 i86_n3    genlic32.exe won't allow use of hostids longer
  2593.                                than the screen field.
  2594.                P3551 i86_z3    Windows95 bug obtaining SPX low-level address.
  2595.                P3567 All       Decimal format fails with exp-date at end of
  2596.                                month.
  2597.                P3586 All       lmreread can (rarely) result in vdaemon core dump.
  2598.                P3645 All       Memleak when checkout(f1, 1) then checkout(f1, 2).
  2599.                P3699 All       Decimal format failed with ints between 2^31 and 2^32.
  2600.                      Windows   lmver now works on a .exe file.
  2601.                P3730 All       Core dump possible when $VENDOR_LICENSE_FILE
  2602.                                and $LM_LICENSE_FILE set.
  2603.                P3731 i86_z3    Networking error gave incorrect error message.
  2604.  
  2605.        Bugs fixed in v6.1b
  2606.        ___________________
  2607.  
  2608.                Bug  Platform   Description
  2609.                ___________________________
  2610.                     sun4_u5    Vendor daemon won't run when process allows > 1024
  2611.                                file descriptors.
  2612.  
  2613.        Bugs fixed in v6.1a
  2614.        ___________________
  2615.  
  2616.                Bug  Platform   Description
  2617.                ___________________________
  2618.                P3280 All       Queued users will dequeue after 2 1/2 hours.
  2619.                P3281 Unix      Baddate checking is not thorough
  2620.                P3289 Windows   Error message box appears behind all other windows
  2621.                P3306 Windows   Client can crash when using Netware server
  2622.                P3307 All       lmdiag gives misleading error with vendor-defined id
  2623.                P3315 All       lc_vsend connects to daemon for first feature in
  2624.                                license -- can be wrong daemon
  2625.                P3316 All       REPORTLOG includes incorrect, large cpu times for
  2626.                                Pre-v5 clients -- also makes reportlogs larger
  2627.                P3322 All       checkout can fail when server stopped and restarted
  2628.                                (very rare).
  2629.                P3323 Windows   Client can fail with redundant servers
  2630.                P3324 All       lc_auth_data fails with certain long feature lines
  2631.                P3353 All       Decimal format doesn't work with vdefined hostid
  2632.                P3364 Windows   License file dialog doesn't work
  2633.  
  2634.  
  2635.  
  2636.  
  2637.  
  2638.  
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644.                                   - 41 -
  2645.  
  2646.  
  2647.  
  2648.        Bugs fixed in v6.1
  2649.        ___________________
  2650.  
  2651.                Bug  Platform   Description
  2652.                ___________________________
  2653.                P3175 All       LM_CO_WAIT, if it queues, returns erroneously with
  2654.                                LM_MAXUSERS error.
  2655.                P3177 All       Simple/Trivial API, returns LM_NOFEATURE when it
  2656.                                should return LM_BADHOST
  2657.                P3186 All       The combination of checkout/port@host/
  2658.                                LM_A_CHECKOUTFILTER/LM_CO_LOCALTEST fails.
  2659.                P3188 All       The combination of port@host with
  2660.                                LM_CO_QUEUE and lc_auth_data fails.
  2661.                P3203 Unix      lmgrd v6 with pre-v6 vendor daemon, lmremove and
  2662.                                lmdown require admin permissions, as if lmgrd -p
  2663.                                were used.
  2664.                P3206 All       No system error numbers in error messages.
  2665.                P3209 Windows   Lmgrd startup is now displayed in debug log
  2666.                P3210 Windows   Enhanced Control Panel to add more diagnostics
  2667.                P3226 Windows   Fixed problem with Alpha-NT and vendor codes
  2668.                P3227 Windows   Fixed Firewall operation, now uses port on Daemon line
  2669.                P3237 Windows   Fixed export of access function in static library
  2670.                P3250 Windows   Pressing stop in Control Panel could freeze lmgrd.
  2671.                P3251 Windows   Status button in Control Panel could erroneously
  2672.                                say server was running.
  2673.  
  2674.  
  2675.  
  2676.  
  2677.  
  2678.  
  2679.  
  2680.  
  2681.  
  2682.  
  2683.  
  2684.  
  2685.  
  2686.  
  2687.  
  2688.  
  2689.  
  2690.  
  2691.  
  2692.  
  2693.  
  2694.  
  2695.  
  2696.  
  2697.  
  2698.  
  2699.  
  2700.  
  2701.  
  2702.  
  2703.  
  2704.  
  2705.  
  2706.  
  2707.  
  2708.  
  2709.  
  2710.                                   - 42 -
  2711.  
  2712.  
  2713.  
  2714.  
  2715.                               Flexible License Manager
  2716.  
  2717.                                     Version 8.1a
  2718.                                     RELEASE NOTES
  2719.  
  2720.  
  2721.  
  2722.                These release notes describe the changes from FLEXlm v7.2.
  2723.  
  2724.        Summary of v8 Enhancements from v7.2
  2725.        ______________________________________
  2726.  
  2727.            Mobile Licensing. 2 new methods are supported:
  2728.                o BORROW-attribute:  The client specifies the borrow
  2729.                  duration, and the server keeps the license checked out
  2730.                  via linger.  The client uses a local file to do checkouts
  2731.                  during the borrow period.  Significant enhancements were made
  2732.                  throughout the product to make this relatively secure
  2733.                  (although less so than without borrowing) and easy-to-use.
  2734.                o FLEXid FLOAT_OK:  Licenses issued node-locked to FLEXids
  2735.                  can now float on a network, if the license has the FLOAT_OK
  2736.                  attribute.  Supported where client and server are Windows.
  2737.                  If the dongle is attached to a license server, then the
  2738.                  license floats on the network.  To take home, user moves the
  2739.                  dongle from the server to a standalone Windows system.
  2740.                  License then only runs on standalone system, and is removed
  2741.                  from network.
  2742.  
  2743.            8-bit character support:
  2744.                o 8-bit characters (supporting Latin-based languages)
  2745.                  is now fully supported, including license files, client
  2746.                  environments, and log files.
  2747.  
  2748.            lmutil/lmtools Improvements:
  2749.                o lmreread now rereads all relevant information in the license
  2750.                  and options file.
  2751.                o lmborrow command to support linger-based borrowing.
  2752.                o lmswitch command to control debug log file location and
  2753.                  size, on a per vendor-daemon basis.
  2754.                o lmdown can be forced to run only on the license-server node,
  2755.                  via 'lmgrd -local'.
  2756.                o lmpath:  Allows users improved direct control over the license file
  2757.                  settings.
  2758.  
  2759.            Unix heartbeat multi-thread support on popular platforms:
  2760.                o Previously, on Unix the only safe way to use heartbeats was
  2761.                  for the application to call heartbeats manually.  This
  2762.                  version supports multi-threaded heartbeats which are safe and
  2763.                  considerably enhance security.  This is not supported on
  2764.                  platforms that do not have reliable pthreads support, but it
  2765.  
  2766.  
  2767.  
  2768.  
  2769.  
  2770.  
  2771.  
  2772.  
  2773.  
  2774.  
  2775.  
  2776.                                   - 43 -
  2777.  
  2778.  
  2779.  
  2780.                  is supported on all popular platforms.
  2781.  
  2782.            Windows, faster response when server is down, and faster lmtools:
  2783.                o Windows has a known bug in the networking 'connect()' that
  2784.                  has caused 15 to 45-second delays when the server node is
  2785.                  down, and general slow response when lmtools/lmutil
  2786.                  communicates with a license server.  This has been worked
  2787.                  around in this version.  The response is now about the same
  2788.                  as Unix.
  2789.  
  2790.            DUP_GROUP enhancement:
  2791.                o Previously, only one DUP_GROUP setting was allowed per
  2792.                  feature.  This made it difficult for companies to change
  2793.                  the DUP_GROUP policy.  This limitation has been removed.
  2794.  
  2795.            End-user Options file:
  2796.                o IP-Addresses are supported wherever hostnames are
  2797.                  supported.
  2798.                o DEBUGLOG can set location on a per vendor daemon basis.
  2799.  
  2800.  
  2801.            Improved Dongle Support
  2802.                o Dongles now supported on USB devices.
  2803.  
  2804.            SIGN2=
  2805.                o CRO customers upgrading to v8.1 will use SIGN2= licenses
  2806.  
  2807.        Upgrading to v8.1 -- changes to lm_code.h
  2808.        _________________________________________
  2809.  
  2810.                The new lm_code.h file no longer comes with ENCRYPTION_SEEDs, but
  2811.                instead has LM_SEED1-3.  To upgrade simply:
  2812.  
  2813.                        1) Copy all your existing ENCRYPTION_SEEDs from your
  2814.                           old lm_code.h into the new lm_code.h
  2815.  
  2816.                        2) Make up new unique 32-bit numbers for LM_SEED1-3 for
  2817.                           your company.   These must be different than the
  2818.                           ENCRYPTION_SEED.  For your convenience we now have
  2819.                           a command-line utility, lmrand1 -seeds, that can be
  2820.                           optionally used to generate your LM_SEEDs.
  2821.  
  2822.                In short, you need both your existing ENCRYPTION_SEEDs and new
  2823.                LM_SEEDs in the new lm_code.h file.
  2824.  
  2825.        Borrowing -- Linger-based
  2826.        _________________________
  2827.  
  2828.                This form of borrowing is portable, easy-to-use, reliable, but
  2829.                potentially less secure than a regular FLEXlm checkout.
  2830.                Therefore, by default it is disabled.  It requires no extra
  2831.  
  2832.  
  2833.  
  2834.  
  2835.  
  2836.  
  2837.  
  2838.  
  2839.  
  2840.  
  2841.  
  2842.                                   - 44 -
  2843.  
  2844.  
  2845.  
  2846.                coding by developers though we have provided an API so that
  2847.                developers can customize it if desired (however, please see the
  2848.                note about lmnewgen below).
  2849.  
  2850.                Outline
  2851.                _______
  2852.  
  2853.                The basic mechanism is this:  The user indicates through one of
  2854.                a variety of options that they want to borrow licenses, and
  2855.                then the applications are used (possibly just started and
  2856.                stopped to initiate the borrow), which use causes the licenses
  2857.                to be borrowed.   If the app is run twice in this mode, the
  2858.                second checkout does not borrow another copy.  The license
  2859.                remains checked out ("lingers") at the license server, and a
  2860.                local encrypted file is stored on the end-user's system.
  2861.                Subsequent checkouts are done against the local file, until the
  2862.                borrow period expires, at which time the local encrypted file
  2863.                no longer allows checkouts, and the server returns the
  2864.                borrowed/lingered license to the available pool.
  2865.                No clock synchronization is required between client and server.
  2866.  
  2867.                Security
  2868.                ________
  2869.  
  2870.                There are two security issues, which we've taken steps to
  2871.                minimize as best as possible while maintaining an easy-to-use
  2872.                and reliable system:
  2873.  
  2874.                        RISK 1) Should the server be stopped and restarted,
  2875.                                the licenses will be served again, which means
  2876.                                that extra uses may occur.  Note that most
  2877.                                honest end-users are already reluctant to ever
  2878.                                shutdown license servers, which inherently
  2879.                                minimizes this risk.
  2880.  
  2881.                                lmremove does not return linger licenses, so
  2882.                                lmremove is not a risk.
  2883.  
  2884.                        RISK 2) The local borrow file is itself a point of
  2885.                                attack for counterfeiters.  If this borrow file
  2886.                                can be counterfeited, then the product can be
  2887.                                used without a valid license.  This is not as
  2888.                                secure a CRO licenses, and unfortunately cannot
  2889.                                be.  We believe this to be "reasonably" secure
  2890.                                except for products that are particularly
  2891.                                attractive to determined hackers.
  2892.  
  2893.                More details about how we minimize these risks follow.
  2894.  
  2895.                How to Enable
  2896.                _____________
  2897.  
  2898.  
  2899.  
  2900.  
  2901.  
  2902.  
  2903.  
  2904.  
  2905.  
  2906.  
  2907.  
  2908.                                   - 45 -
  2909.  
  2910.  
  2911.  
  2912.                By default, linger-based borrowing is disabled.
  2913.  
  2914.                Linger-based borrowing is enabled by:
  2915.  
  2916.                        1) Set LM_BORROW_OK to 1 in machind/lm_code.h and
  2917.                           then build the flexlm kit.
  2918.  
  2919.                           LM_BORROW_OK must be set in lm_code.h to use borrowing.
  2920.  
  2921.                        2) The individual FEATURE/INCREMENT line must also have
  2922.                           borrowing enabled, by adding the optional attribute
  2923.  
  2924.                                BORROW[=n]
  2925.  
  2926.                           where 'n' is the maximum number of hours that the
  2927.                           license can be borrowed for.   RISK 1 is reduced
  2928.                           by reducing the number of hours.  The default
  2929.                           is one week, or 168 hours.  The maximum is
  2930.                           limited by the size of 32-bit integer:  2 billion
  2931.                           hours.
  2932.  
  2933.  
  2934.                How to Borrow a license
  2935.                _______________________
  2936.  
  2937.                There are 3 methods:
  2938.  
  2939.                        o lmborrow
  2940.                        o LM_BORROW environment variable
  2941.                        o LM_A_BORROW_EXPIRE
  2942.  
  2943.                For lmborrow and LM_BORROW, after the setup is done, the desired
  2944.                features must be checked out on the same day which then borrows
  2945.                the license.
  2946.  
  2947.  
  2948.                lmborrow:  This is one of the lmutil utilities,
  2949.                        and there is also a tab in lmtools for this.  After
  2950.                        lmborrow is run, all the desired applications must be
  2951.                        run to checkout the desired features.  Note that this
  2952.                        only applies to the user running lmborrow on the node
  2953.                        where lmborrow is run.
  2954.  
  2955.  
  2956.                        lmborrow {vendor|all} date [time]
  2957.  
  2958.                        For example:
  2959.  
  2960.                        lmborrow gsi 20-aug-2001 13:00
  2961.  
  2962.                        where date is the date the license is to be returned
  2963.  
  2964.  
  2965.  
  2966.  
  2967.  
  2968.  
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974.                                   - 46 -
  2975.  
  2976.  
  2977.  
  2978.                        in dd-mmm-yyyy format.  The time is optional and is
  2979.                        24 hour clock in the client's local time.  If
  2980.                        unspecified, the checkout lasts until the end of the
  2981.                        given day.  The vendor is the vendor daemon name for
  2982.                        the products to be borrowed, or "all" for all
  2983.                        vendors.
  2984.  
  2985.                LM_BORROW: Environment variable.  The format is:
  2986.  
  2987.                                today:vendor:enddate[:time]
  2988.  
  2989.                                where           is
  2990.                                _____           __
  2991.  
  2992.                                today:          Today's date in dd-mmm-yyyy format
  2993.                                                Any checkouts done on this date
  2994.                                                will create local borrow info.
  2995.                                                If the environment variable still
  2996.                                                exists on other dates, it will
  2997.                                                have no effect.
  2998.                                enddate:        The date the license is to be
  2999.                                                returned in dd-mmm-yyyy format
  3000.                                time:           24-hour format.  Optional.  If
  3001.                                                unspecified, the time is at the
  3002.                                                end of the date on enddate.
  3003.                                vendor:         The vendor name of the products
  3004.                                                to be borrowed, or 'all' for
  3005.                                                all vendors.
  3006.  
  3007.                                For example,
  3008.  
  3009.                                LM_BORROW="15-aug-2001:gsi:20-aug-2001:13:00"
  3010.  
  3011.                                The license is being borrowed on 15-aug-2001, and
  3012.                                will be returned at 1p.m. on August 20.
  3013.  
  3014.                        Note that lmborrow actually sets the LM_BORROW
  3015.                        variable in the registry (Windows) or in the .flexlmrc
  3016.                        (Unix), so the lmborrow utility is effectively a user
  3017.                        interface for this variable.
  3018.  
  3019.  
  3020.                LM_A_BORROW_EXPIRE:
  3021.  
  3022.                        This is for the application that wants to provide
  3023.                        an interface for borrowing themselves.
  3024.  
  3025.                        Before lc_checkout, call
  3026.  
  3027.                                lc_set_attr(job, LM_A_BORROW_EXPIRE,
  3028.                                        (LM_A_VAL_TYPE)datestring);
  3029.  
  3030.  
  3031.  
  3032.  
  3033.  
  3034.  
  3035.  
  3036.  
  3037.  
  3038.  
  3039.  
  3040.                                   - 47 -
  3041.  
  3042.  
  3043.  
  3044.                        where datestring is the date and optionally time
  3045.                        when the borrowed license expires.  Presumably
  3046.                        the ISV will provide a user interface
  3047.                        where the user specifies when the license
  3048.                        should be returned.  This then would be used as
  3049.                        as 'datestring' above.
  3050.  
  3051.                        Any subsequent checkouts in this job will create
  3052.                        the local borrow info.
  3053.  
  3054.  
  3055.                After using lmborrow or setting $LM_BORROW, all the desired
  3056.                applications must be run and their licenses checked out at
  3057.                least once on the same day that lmborrow is run or $LM_BORROW
  3058.                is set, and while connected to the network where the license
  3059.                server is running.  If they are run more than once, that's
  3060.                okay, only one license is borrowed.  This effect lasts until
  3061.                the end of the day, in client local time.  So, once lmborrow is
  3062.                used or $LM_BORROW set, all checkouts done on the same day, and
  3063.                while connected, will borrow licenses.  If a connected checkout
  3064.                occurs any day following the setup, it will not borrow a
  3065.                license.
  3066.  
  3067.                Errors
  3068.                ______
  3069.  
  3070.                Checkout fails if borrowing is requested under the following
  3071.                conditions:
  3072.  
  3073.                        o LM_BORROW_TOOLONG:
  3074.                                Borrow period requested is longer than the
  3075.                                license allows
  3076.  
  3077.                        o LM_NOBORROWSUPP:
  3078.                                The license doesn't support borrowing, or
  3079.                                the application doesn't support borrowing.
  3080.  
  3081.                Other changes for Borrowing
  3082.                ___________________________
  3083.  
  3084.                A number of enhancements were made to make borrowing more
  3085.                convenient and secure.  Many of these changes were made
  3086.                so that servers should rarely need to be shutdown, which
  3087.                minimizes RISK 1 outlined above.
  3088.  
  3089.                        o The end-user options file is now reread with the
  3090.                          lmreread command.
  3091.                        o The lmswitch and DEBUGLOG end-user option allows
  3092.                          end-users to control the size of debug log files
  3093.                          and redirect them as necessary.
  3094.                        o The hostname on the SERVER line of the license is
  3095.  
  3096.  
  3097.  
  3098.  
  3099.  
  3100.  
  3101.  
  3102.  
  3103.  
  3104.  
  3105.  
  3106.                                   - 48 -
  3107.  
  3108.  
  3109.  
  3110.                          reread with a lmreread command.
  3111.                        o If licenses are borrowed, lmdown will only work
  3112.                          from the same host where the license server is
  3113.                          running, and only if the user types
  3114.  
  3115.                                lmdown -force [...]
  3116.  
  3117.                          or selects force from the lmtools GUI.
  3118.                          Otherwise, an error is presented saying there
  3119.                          are outstanding borrowed licenses.  The debuglog
  3120.                          also prints the names of users with borrowed
  3121.                          licenses.
  3122.                        o lmstat user feature output includes borrow information
  3123.                          where applicable.
  3124.                        o lmborrow -status will print information
  3125.                          about features borrowed to the client node, that is,
  3126.                          the node where lmborrow is being run.  This is useful
  3127.                          for finding out which features have been borrowed
  3128.                          while disconnected from the network.
  3129.                        o The same information available from lmborrow -status
  3130.                          can be obtained with
  3131.  
  3132.                                LM_BORROW_STAT *s;
  3133.                                lc_get_attr(job, LM_A_BORROW_STAT, &s);
  3134.                                for (; s; s = s->next)
  3135.                                {
  3136.                                        /* s contains local borrow status */
  3137.                                }
  3138.                        o lmborrow -clear will clear the borrow setting, so
  3139.                          no checkouts will attempt to borrow a license.
  3140.                        o 'lmgrd -local' only allows the lmdown command to be
  3141.                          run from the same node where the lmgrd command is
  3142.                          running.
  3143.  
  3144.                End-user options support
  3145.                ________________________
  3146.  
  3147.                BORROW_LOWWATER feature n
  3148.  
  3149.                        where "feature" is the feature name and "n" is the number of
  3150.                        licenses which cannot be borrowed.  For example if
  3151.                        the feature line says:
  3152.  
  3153.                                FEATURE f1 ... 10 ... BORROW
  3154.  
  3155.                        and the options file has
  3156.  
  3157.                                BORROW_LOWWATER f1 3
  3158.  
  3159.                        then only 7 licenses can be borrowed.
  3160.  
  3161.  
  3162.  
  3163.  
  3164.  
  3165.  
  3166.  
  3167.  
  3168.  
  3169.  
  3170.  
  3171.  
  3172.                                   - 49 -
  3173.  
  3174.  
  3175.  
  3176.                INCLUDE_BORROW feature type name
  3177.  
  3178.                        See the INCLUDE syntax.  If set, only users
  3179.                        or hosts listed can borrow "feature".
  3180.  
  3181.                EXCLUDE_BORROW feature type name
  3182.  
  3183.                        See the EXCLUDE syntax.  If set, only users
  3184.                        not excluded can borrow "feature".
  3185.  
  3186.                Minimizing 'RISK 2'
  3187.                ___________________
  3188.  
  3189.                This is the risk of someone counterfeiting a local borrow
  3190.                file.
  3191.  
  3192.                IMPORTANT NOTE: Borrowing security will only function fully if
  3193.                you regenerate lm_new.o every time you relink your
  3194.                application.  This is illustrated in our sample makefiles.
  3195.  
  3196.                RISK 2 is minimized:
  3197.  
  3198.                        o The borrow file encrypted string includes the
  3199.                          FEATURE line that was used to borrow against.
  3200.                          The license is checked out against this FEATURE line
  3201.                          as usual, with the only exception being the
  3202.                          count.  Therefore, using CRO is an advantage with
  3203.                          borrowing, since CRO licenses are presumed to
  3204.                          be uncounterfeitable.
  3205.                        o The borrow encrypted string includes a hostid.  On
  3206.                          Windows this hostid is the disk-serial number, since
  3207.                          ethernet hostid is often unavailable when Windows is
  3208.                          unconnected to a network.  This hostid is validated.
  3209.                        o The borrow encrypted string contains the borrow
  3210.                          start- and end-time, and the difference between the
  3211.                          start and end time must be no longer than the license
  3212.                          allows for.  Therefore the borrow files would have to
  3213.                          be recreated every few days.  That is, even if
  3214.                          someone could counterfeit a borrow file, they would
  3215.                          have to do regularly for each feature.
  3216.                        o The cryptography used for borrowing is, by default,
  3217.                          contained in lm_new.o (lm_new.obj on windows).  This
  3218.                          file should be generated anew for every version of
  3219.                          every program.  If so, then counterfeiting borrow
  3220.                          files will be different for every version of every
  3221.                          program.  A fresh lm_new.c is generated by the
  3222.                          lmnewgen program.  (Note that lmnewgen is built
  3223.                          by the makefile during product installation, and is
  3224.                          not part of the kit.  It's unique to your company.)
  3225.                        o By default, local borrow information is stored in
  3226.  
  3227.  
  3228.  
  3229.  
  3230.  
  3231.  
  3232.  
  3233.  
  3234.  
  3235.  
  3236.  
  3237.  
  3238.                                   - 50 -
  3239.  
  3240.  
  3241.  
  3242.                          Unix:         $HOME/.flexlmborrow Windows:      MY
  3243.                          ComputerY_LOCAL_MACHINETWARE                                FLEXlm License ManagerBorrow
  3244.  
  3245.                          The data is encrypted and not intended to be read.
  3246.                          However, if you remove or alter the data, borrowing
  3247.                          will naturally fail.
  3248.  
  3249.                lmborrow utility
  3250.                ________________
  3251.  
  3252.                This will borrow the licenses, and tell you what features
  3253.                you already have borrowed, then when they will expire.
  3254.  
  3255.                        lmborrow {vendor|all} date [time]
  3256.  
  3257.                           where date is the date the license is to be returned
  3258.                           in dd-mmm-yyyy format.  The time is optional and is
  3259.                           24 hour clock in local time.
  3260.  
  3261.                           For example: lmborrow gsi 20-aug-2001 13:00
  3262.  
  3263.                        lmborrow -status
  3264.  
  3265.                           Prints a list of local borrow information so the
  3266.                           end-user can see what they've already borrowed.
  3267.  
  3268.  
  3269.        Borrowing -- Dongle-based
  3270.        _________________________
  3271.  
  3272.                Borrowing can currently be implemented with dongles on Windows.
  3273.                Both the server and client must be Windows.
  3274.  
  3275.                To implement borrowing using dongles:
  3276.  
  3277.                1) Issue a license node-locked to a dongle with the new
  3278.                   FLOAT_OK attribute, along with a dongle.  One dongle and
  3279.                   one FEATURE line are required per license that will be
  3280.                   borrowable.
  3281.  
  3282.                        FEATURE f1 gsi 1.0 permanent uncounted FLOAT_OK                         HOSTID=FLEXID=7-b28520b9 SIGN=123456789012
  3283.  
  3284.  
  3285.                2) The end-user attaches all of the dongles to the license server.
  3286.                   These licenses then float, with a count of 1 per
  3287.                   FLOAT_OK license.
  3288.  
  3289.                3) To borrow, the end-user must have a copy of the FEATURE
  3290.                   line on their system in a location where the application
  3291.                   expects to find it.  The dongle is then moved from the
  3292.                   server to the disconnected client node.  The floating usage
  3293.  
  3294.  
  3295.  
  3296.  
  3297.  
  3298.  
  3299.  
  3300.  
  3301.  
  3302.  
  3303.  
  3304.                                   - 51 -
  3305.  
  3306.  
  3307.  
  3308.                   is disabled, the license works on the node with the
  3309.                   dongle, even when disconnected from the network.
  3310.  
  3311.                4) By default, it is possible to get one extra use from FLOAT_OK
  3312.                   licenses by running a node-locked license on the license server
  3313.                   since the license can also float while on the license server.
  3314.                   This can be disabled using a hostid modifier on the FLOAT_OK
  3315.                   attribute, explained below.
  3316.  
  3317.  
  3318.                Example:
  3319.  
  3320.                SERVER myhost 009027319bbb
  3321.                VENDOR gsi
  3322.                FEATURE f1 gsi 1.0 uncounted permanent FLOAT_OK                 HOSTID=FLEXID=7-b28520b9 SIGN=123456789012
  3323.                FEATURE f1 gsi 1.0 uncounted permanent FLOAT_OK                 HOSTID=FLEXID=7-b2857678 SIGN=ABCDEF123456
  3324.  
  3325.                To begin with, both dongles are on the server.
  3326.                When attached to the license server, each FLOAT_OK license
  3327.                becomes a single floating use.  Therefore, up to 2 users can use
  3328.                f1 on the customers network, except on the server node,
  3329.                where, the license use is disallowed.
  3330.  
  3331.                If Sue wants to work at home, she installs the license file on
  3332.                her system (this only needs to be done once), and transfers the
  3333.                dongle from the server to her PC.  The server now allows the
  3334.                remaining 1 license to float.
  3335.  
  3336.                After returning the dongle to the server, Sue (or the sysadmin)
  3337.                will need to run lmreread for the 2nd license to float again.
  3338.  
  3339.                Note that this borrowing method is unrelated to Linger-based
  3340.                borrowing.  None of the following have any impact on
  3341.                dongle-based borrowing:
  3342.  
  3343.                        LM_BORROW_OK
  3344.                        lmborrow utility
  3345.  
  3346.                FLOAT_OK=serverhostid
  3347.                _____________________
  3348.  
  3349.                By default, it is possible to get one extra use from FLOAT_OK
  3350.                licenses by running a node-locked license on the license server
  3351.                node while the license is floating.
  3352.                This can be disabled using a hostid modifier on the FLOAT_OK
  3353.                attribute:
  3354.  
  3355.                        1) The serverhostid is the same hostid that appears on
  3356.                           the SERVER line.
  3357.  
  3358.                        2) The license server can only be run on the node
  3359.  
  3360.  
  3361.  
  3362.  
  3363.  
  3364.  
  3365.  
  3366.  
  3367.  
  3368.  
  3369.  
  3370.                                   - 52 -
  3371.  
  3372.  
  3373.  
  3374.                           with lmhostid equal to the serverhostid specified
  3375.                           with FLOAT_OK.
  3376.  
  3377.                        3) The client can run on the server node, but
  3378.                           they can only use the license being served by the
  3379.                           license-server, not the node-locked license.
  3380.                           Otherwise an extra use for each FLOAT_OK license
  3381.                           could occur.
  3382.  
  3383.                Example:
  3384.  
  3385.                SERVER myhost 009027319bbb
  3386.                VENDOR gsi
  3387.                FEATURE f1 gsi 1.0 uncounted permanent FLOAT_OK=009027319bbb                 HOSTID=FLEXID=7-b28520b9 SIGN=123456789012
  3388.  
  3389.                This places some extra burden on the user and the license issuer,
  3390.                since the server's hostid (not the dongle flexid) must be
  3391.                specified in the license.
  3392.  
  3393.                HOSTID lists are not allowed with FLOAT_OK
  3394.                __________________________________________
  3395.  
  3396.                The hostid on the FLOAT_OK feature line must be only one hostid.
  3397.                For multiple dongles, use individual FEATURE lines for each
  3398.                dongle.
  3399.  
  3400.  
  3401.        8-bit character support
  3402.        _______________________
  3403.  
  3404.                With this version, all "8-bit" characters are now supported.
  3405.                These are the characters required for most latin-based
  3406.                languages, including all accented vowels.  FLEXlm now fully
  3407.                supports characters from 40 (space) through 255 (y-umlaut in
  3408.                ISO-latin encoding), along with the normal "spacing"
  3409.                characters: tab (9), newline(10), and CR(13).
  3410.  
  3411.                Note that an 8-bit editor with standard ISO-latin support is
  3412.                required to view these characters correctly in this document.
  3413.                Unix vi is often not correctly 8-bit, and MS-DOS command line
  3414.                is not.  Windows editors usually correctly support ISO-Latin
  3415.                8-bit.
  3416.  
  3417.                These 8-bit characters can now be used in all parts of FLEXlm
  3418.                including, but not limited to:
  3419.                    o All components of the license file
  3420.                    o All components of the options file
  3421.                    o User names, hostnames
  3422.  
  3423.        Unix heartbeat multi-thread support on popular platforms
  3424.        ________________________________________________________
  3425.  
  3426.  
  3427.  
  3428.  
  3429.  
  3430.  
  3431.  
  3432.  
  3433.  
  3434.  
  3435.  
  3436.                                   - 53 -
  3437.  
  3438.  
  3439.  
  3440.                On Unix, heartbeats are now performed via multi-threading
  3441.                by default on most platforms.  Previously, the default behavior
  3442.                was to use SIGALRM, which was not recommended and was
  3443.                susceptible to core dumps.
  3444.  
  3445.                Applications on platforms that support pthreads must now link
  3446.                in the pthreads library.
  3447.  
  3448.                On all platforms except AIX, this is done by appending
  3449.  
  3450.                        -lpthread
  3451.  
  3452.                to the link line.  On AIX, it's
  3453.  
  3454.                        -lpthreads
  3455.  
  3456.                If an application cannot use this library, then
  3457.                link in lm_nomt.o before liblmgr.a, thereby disabling
  3458.                multi-threaded heartbeats.
  3459.  
  3460.                        cc ... lm_nomt.o ... liblmgr.a ...
  3461.  
  3462.                Alternatively the old SIGALRM can be used by setting
  3463.                LM_A_MT_HEARTBEAT to 0:
  3464.  
  3465.                        lc_set_attr(job, LM_A_MT_HEARTBEAT, (LM_A_VAL_TYPE)0);
  3466.  
  3467.                Although this is not recommended.  Instead, it's better to
  3468.                use manual heartbeats.
  3469.  
  3470.                All platforms support multi-threaded heartbeats, EXCEPT:
  3471.  
  3472.                        alpha_r6
  3473.                        alpha_u3
  3474.                        hp700_u10 (Use hp700_u11 instead)
  3475.                        i86_b2
  3476.                        i86_g2
  3477.                        i86_l1
  3478.                        i86_x5
  3479.                        i86_u7
  3480.                        ppc_u4
  3481.                        rm400_u5
  3482.                        rs6000_u3
  3483.                        rs64_u4
  3484.                        sco_u3
  3485.  
  3486.  
  3487.        CRO ISVs upgrading to v8.1
  3488.        __________________________
  3489.  
  3490.                CRO customers will use SIGN2= licenses with v8.1.  When
  3491.  
  3492.  
  3493.  
  3494.  
  3495.  
  3496.  
  3497.  
  3498.  
  3499.  
  3500.  
  3501.  
  3502.                                   - 54 -
  3503.  
  3504.  
  3505.  
  3506.                generating licenses for v8.1, add SIGN2=0 before using
  3507.                lmcrypt on the license.  The older clients will use the
  3508.                SIGN= for authenticating and newer clients will use
  3509.                SIGN2=.
  3510.  
  3511.                SIGN2= provides necessary additional CRO security.
  3512.  
  3513.  
  3514.        Other enhancements
  3515.        __________________
  3516.  
  3517.  
  3518.                UNIX:  lockfile now in /var/tmp.
  3519.                ________________________________
  3520.  
  3521.                Historically, the flexlm lockfile is in /usr/tmp.  We're
  3522.                migrating to /var/tmp since /usr/tmp is no longer part of
  3523.                the standard Unix file system.  We still check for /usr/tmp
  3524.                lockfiles, however, so that this system is still secure.
  3525.  
  3526.  
  3527.                Locale independence.
  3528.                ____________________
  3529.  
  3530.                FLEXlm is guaranteed work identically regardless of the
  3531.                "current locale".
  3532.  
  3533.  
  3534.                lmpath
  3535.                ______
  3536.  
  3537.                This lmutil/lmtools utility allows direct control over
  3538.                FLEXlm license paths.  It has 2 modes: get and set.  To get
  3539.                the current paths, simply use lmpath with no arguments, e.g.,
  3540.  
  3541.                        % lmpath
  3542.                        lmpath - Copyright (C) 1989-2001 Globetrotter Software, Inc.
  3543.                        Known Vendors:
  3544.                        _____________
  3545.  
  3546.                        demo:   ./floating.lic:./locked.lic
  3547.                        _____________
  3548.  
  3549.                        Other Vendors:
  3550.                        ______________
  3551.  
  3552.                        /usr/local/flexlm/licenses/license.dat
  3553.  
  3554.                Note that where the path is set to a directory, all the *.lic files
  3555.                are separately listed.
  3556.  
  3557.  
  3558.  
  3559.  
  3560.  
  3561.  
  3562.  
  3563.  
  3564.  
  3565.  
  3566.  
  3567.  
  3568.                                   - 55 -
  3569.  
  3570.  
  3571.  
  3572.                To set the path, use:
  3573.  
  3574.                        % lmpath vendor path
  3575.  
  3576.                where <vendor> is the vendor daemon name, or "all" for all vendors, and
  3577.                <path> is a colon (semi-colon on Windows) separated list.
  3578.  
  3579.                Note that this CANNOT set or override the environment.
  3580.                It only sets the FLEXlm registry on Windows and $HOME/.flexlmrc
  3581.                on Unix.
  3582.  
  3583.  
  3584.                lmswitch
  3585.                ________
  3586.  
  3587.  
  3588.                This lmutil and lmtools.exe command causes a vendor daemon to
  3589.                write its debug log information to a specified file.  The
  3590.                syntax is:
  3591.  
  3592.                        [ lmutil ] lmswitch [-c license-path] vendor filename
  3593.  
  3594.                where "vendor" is the vendor daemon name.  The debug log information
  3595.                is then only for that one vendor daemon, where the default is to
  3596.                put all vendor daemons and lmgrd debug log info into the same file.
  3597.  
  3598.                This, for the first, allows companies to control the size of
  3599.                their debug log file, as well as keep separate log files for
  3600.                different vendors (see DEBUGLOG below).
  3601.  
  3602.  
  3603.                DEBUGLOG in options file
  3604.                ________________________
  3605.  
  3606.                The syntax is:
  3607.  
  3608.                        DEBUGLOG file
  3609.  
  3610.                where file is the filename/path of where the debug log should go.
  3611.                Note that this only affects this particular vendor.  The rest
  3612.                of the debuglog information is unaffected.
  3613.  
  3614.                See also "lmswitch" above.
  3615.  
  3616.  
  3617.                Windows: faster response when the server is down
  3618.                ________________________________________________
  3619.  
  3620.                Windows has a bug (which Microsoft has said the plan to fix
  3621.                at some unspecified future date) that causes the connect()
  3622.                function call to have a delay when the license server is down.
  3623.  
  3624.  
  3625.  
  3626.  
  3627.  
  3628.  
  3629.  
  3630.  
  3631.  
  3632.  
  3633.  
  3634.                                   - 56 -
  3635.  
  3636.  
  3637.  
  3638.                When using a "default port" (the port number is not on the
  3639.                SERVER line, or using @host), the delay was 15 seconds.
  3640.                This is now reduced to 1.5 seconds in version 8, by an internal
  3641.                workaround which used multi-threading.
  3642.  
  3643.                Options File
  3644.                ______________________
  3645.  
  3646.                IP-Address can be used instead of hostnames:
  3647.  
  3648.                        Wherever a hostname can be used in the options file,
  3649.                        an ip-address can be used instead, in the format
  3650.                        #.#.#.#, eg., 123.456.123.456.
  3651.  
  3652.                        In particular, this is supported in a HOST_GROUP.
  3653.  
  3654.                Options pool selection:
  3655.  
  3656.                        When there are multiple pools for a single feature
  3657.                        (this happens with certain INCREMENT lines, when, for example
  3658.                        they are for different versions), and you want to
  3659.                        refer to these in the options file, you have to "select" the
  3660.                        pool.  Historically this was done like this:
  3661.  
  3662.                                feature:key=value
  3663.  
  3664.                        However, since colon is now a valid featurename character,
  3665.                        this syntax can be optionally specified:
  3666.  
  3667.                                "feature key=value"
  3668.  
  3669.                        The colon is replaced with a space and the whole thing
  3670.                        is put in quote marks.
  3671.  
  3672.                lmnewgen
  3673.                ________
  3674.  
  3675.                lmnewgen is an executable that is built during product install
  3676.                by the makefile, and is based upon information in lm_code.h.
  3677.                It is unique to your company, and contains all the private
  3678.                security information unique to your company.  It cannot be
  3679.                used to counterfeit licenses, but nevertheless shouldn't be
  3680.                released to untrusted sites.
  3681.  
  3682.                lmnewgen creates the lm_new.o (lm_new.obj) file which must
  3683.                be linked with your application and vendor daemon.  (Note that
  3684.                this was called lmrand2 in previous versions, but has been
  3685.                significantly enhanced for borrowing).
  3686.  
  3687.                IMPORTANT NOTE FOR BORROWING: If you are using borrowing,
  3688.                your product will be more secure if you regenerate lm_new.o
  3689.  
  3690.  
  3691.  
  3692.  
  3693.  
  3694.  
  3695.  
  3696.  
  3697.  
  3698.  
  3699.  
  3700.                                   - 57 -
  3701.  
  3702.  
  3703.  
  3704.                every time you relink your application.
  3705.  
  3706.                .flexlmrc and .flexlmborrow on Unix
  3707.                ___________________________________
  3708.  
  3709.                The $HOME/.flexlmrc is where all FLEXlm environment variables can
  3710.                be stored, in addition to the Unix environment.  It behaves
  3711.                like a registry location on Windows where FLEXlm variables
  3712.                can also be stored.  For example, <VENDOR>_LICENSE_FILE can
  3713.                be stored there (where <VENDOR> is the name a company's vendor
  3714.                name).
  3715.  
  3716.                Similarly, borrowing information is stored by default in
  3717.                $HOME/.flexlmborrow.
  3718.  
  3719.                The location of these 2 files can be changed by setting
  3720.                the $FLEXLM_BORROWFILE and $FLEXLM_RC environment variables.
  3721.                Naturally, these should be set in the real environment, not in
  3722.                $HOME/.flexlmrc.
  3723.  
  3724.                These variables may be useful for developers when testing.
  3725.  
  3726.  
  3727.                lmreread
  3728.                ________
  3729.  
  3730.                lmreread now rereads:
  3731.  
  3732.                        o options file
  3733.                        o hostnames on the SERVER
  3734.                        o path to options file on the VENDOR line
  3735.  
  3736.                Effect on USER_BASED and HOST_BASED:
  3737.  
  3738.                        Rereading the options file has a security impact on
  3739.                        USER_BASED and HOST_BASED.  If it's too easy to change
  3740.                        the INCLUDE list for USER_BASED and HOST_BASED, then
  3741.                        these attributes stop having the desired effect.
  3742.  
  3743.                        Therefore, there is a *delay* in effecting changes
  3744.                        to INCLUDE lines that impact USER_BASED or HOST_BASED
  3745.                        features.
  3746.  
  3747.                        By default, the delay is 12 hours.  This can be changed
  3748.                        with the ls_user_based_reread_delay setting in the
  3749.                        lsvendor.c file.  It can only be changed there
  3750.                        and affects all USER_BASED/HOST_BASED features.
  3751.  
  3752.  
  3753.                Windows Terminal Server support
  3754.                _______________________________
  3755.  
  3756.  
  3757.  
  3758.  
  3759.  
  3760.  
  3761.  
  3762.  
  3763.  
  3764.  
  3765.  
  3766.                                   - 58 -
  3767.  
  3768.  
  3769.  
  3770.                FLEXlm now detects when a node-locked uncounted license
  3771.                is running under Windows Terminal Server.  If it's running on
  3772.                a "remote" node, then the checkout will be denied with
  3773.                LM_TSOK_ERR.  If you want to allow users to run on Terminal
  3774.                Server remote nodes, then the new TS_OK attribute must be
  3775.                added to the license.
  3776.  
  3777.                lmrand1 -seed
  3778.                _____________
  3779.  
  3780.                This is an optional program to generate the seeds necessary for
  3781.                lm_code.h.  That is, lm_code.h in v8.1 will require LM_SEED1-3
  3782.                and these must be random numbers the ISV makes up.  So, they
  3783.                can use 'lmrand1 -seed' to make up these numbers if they want
  3784.                to.
  3785.  
  3786.                The output appears on the screen and in a file called lmseed.dat.
  3787.  
  3788.                Here's a sample session:
  3789.  
  3790.                > lmrand1 -seed
  3791.                The machind/lm_code.h file requires LM_SEED1-3 be set to random
  3792.                numbers.  Once made up these numbers must *never* change.  This program
  3793.                will automatically generate these for you, or you can make them up in
  3794.                some other fashion if you prefer.
  3795.  
  3796.                The output appears on the screen, and in "lmseed.dat"
  3797.                Press RETURN to generate the seeds... <CR>
  3798.                Please wait...................................................
  3799.                Once set, the values for LM_SEED1-3 must *never* change.
  3800.                #define LM_SEED1 0x186f24f0
  3801.                #define LM_SEED2 0x11cd5b60
  3802.                #define LM_SEED3 0x9f6cc8c3
  3803.  
  3804.                Note the <CR> is where the user presses Return/Enter.
  3805.  
  3806.  
  3807.        LM_A_KEY_LEVEL renamed to LM_A_SIGN_LEVEL
  3808.        _________________________________________
  3809.  
  3810.                This attribute is only used when migration to CRO from
  3811.                non-CRO.  If you've used this attribute, you'll need to rename
  3812.                it to LM_A_SIGN_LEVEL.
  3813.  
  3814.  
  3815.        Features planned to be obsoleted in Version 9
  3816.        _____________________________________________
  3817.  
  3818.                o lmcksum will be removed from the license generator,
  3819.                  lmutil and lmtools
  3820.  
  3821.  
  3822.  
  3823.  
  3824.  
  3825.  
  3826.  
  3827.  
  3828.  
  3829.  
  3830.  
  3831.  
  3832.                                   - 59 -
  3833.  
  3834.  
  3835.  
  3836.                o UDP support will be discontinued.
  3837.  
  3838.  
  3839.        Platform Specific Notes:
  3840.        ________________________
  3841.  
  3842.                WINDOWS
  3843.                _______
  3844.  
  3845.                i86_n3 -- Microsoft Windows 32-bit
  3846.                ______
  3847.  
  3848.                          Currently, the GENLIC license generation utility is not
  3849.                           available in this release. To encrypt licenses, use lmcrypt
  3850.                           or makekey utilities.
  3851.  
  3852.                          FLEXlock changes have occurred in this release of FLEXlm.
  3853.                           Please see Programmers Guide documentation for additional
  3854.                           information.
  3855.  
  3856.                Itanium
  3857.                _______
  3858.  
  3859.                it64_n -- Microsoft Windows XP for Itanium 64-bit
  3860.                ______
  3861.  
  3862.  
  3863.                Built with:
  3864.                __________
  3865.  
  3866.                    - Microsoft Platform SDK PreRelease 64-bit (2416.2)
  3867.                    - Microsoft C/C++ compiler version 13.00.9076.3 for IA-64
  3868.                    - Microsoft Incremental Linker version 7.00.9076.3
  3869.                    - Microsoft Program Maintenance Utility version 7.00.8827
  3870.                    - Microsoft Whistler Advanced Server for Itanium Build 5.1.2410
  3871.                      Build 2410
  3872.  
  3873.                Hardware Requirements:
  3874.                _____________________
  3875.  
  3876.                    - Itanium CPU B3 Stepping or greater
  3877.                    - BIOS Firmware revision 89 or greater
  3878.                    - RAM, 500 MB or greater
  3879.                    - Hard Disk, 25 MB space free or greater
  3880.  
  3881.                In This Build:
  3882.                _____________
  3883.  
  3884.                    - All command-line application tools are 64-bit native.
  3885.                    - All necessary libraries and header files are included to
  3886.                      build a FLEXlm enabled application.
  3887.  
  3888.  
  3889.  
  3890.  
  3891.  
  3892.  
  3893.  
  3894.  
  3895.  
  3896.  
  3897.  
  3898.                                   - 60 -
  3899.  
  3900.  
  3901.  
  3902.                    - Support for CRO. See standard FLEXlm RELEASE_NOTES
  3903.                      in ./machind for further information about CRO support.
  3904.  
  3905.                Known Issues:
  3906.                ____________
  3907.  
  3908.                    - LCM and FLEXlock support not available.
  3909.                    - Parallel Dongle (FLEXid) support not available.
  3910.                    - CPU Serial number support (Pentium III) not available on Itanium Chip.
  3911.                    - The following situation can occur while building a vendor
  3912.                      daemon in it64_n:
  3913.  
  3914.                                if exist lm_new.c del lm_new.c
  3915.                                lmrand2.exe demo.exe  -o lm_new.c
  3916.                        Verify failed, 0xc6f8 != 0x30f8NMAKE : fatal error U1077:
  3917.                                'lmrand2.exe' : return
  3918.                        code '0xffffffff'
  3919.                        Stop.
  3920.  
  3921.                    The workaround for this error is to run the NMAKE again.
  3922.                    This error may occur many times before a successful
  3923.                    build. This problem will be resolved in the final release.
  3924.  
  3925.  
  3926.  
  3927.                UNIX
  3928.                ____
  3929.  
  3930.                alpha_r6 -- Alpha Redhat 6
  3931.                ________
  3932.  
  3933.                    uname -a:   Linux chumley.globes.com 2.2.14-6.0 #1
  3934.                                Tue Mar 28 16:56:56 EST 2000 alpha unknow
  3935.                    cc:         /usr/bin/cc
  3936.  
  3937.  
  3938.                alpha_u3 -- Compaq Tru64 Dec Unix Alpha OSF1 OS3+
  3939.                ________
  3940.  
  3941.                    Compatible with OS3 and higher
  3942.  
  3943.                    Note that lmstrip should be avoided on this OS, due to
  3944.                    outstanding bugs.  However, lmstrip doesn't provide
  3945.                    any additional security on this OS, so it shouldn't be needed.
  3946.  
  3947.                    uname -a:   OSF1 zippy.globes.com V3.2 17 alpha
  3948.                    cc:         /usr/ccs/bin/cc -std
  3949.  
  3950.                hp700_u10 -- HPUX 10.x through 11.x 32-bit
  3951.                ________
  3952.  
  3953.  
  3954.  
  3955.  
  3956.  
  3957.  
  3958.  
  3959.  
  3960.  
  3961.  
  3962.  
  3963.  
  3964.                                   - 61 -
  3965.  
  3966.  
  3967.  
  3968.                    uname -a:   HP-UX oglobes B.10.20 A 9000/715 2005771344
  3969.                    cc:         /bin/cc -Aa -D_HIUX_SOURCE -D_HPUX_SOURCE +DA1.0 +DS1.0
  3970.                    Hostid note:  we no longer recommend using ethernet address
  3971.                                as a hostid.  It may fail on some HPUX 11.x systems.
  3972.                    No MT-heartbeat support (use hp700_u11 if needed)
  3973.  
  3974.  
  3975.                hp700_u11 -- HPUX 11.x 32-bit
  3976.                ________
  3977.  
  3978.                    uname -a:   HP-UX hpc180 B.11.00 A 9000/780 2013810305 two-user
  3979.                    cc:         /bin/cc -Aa -D_HIUX_SOURCE -D_HPUX_SOURCE +DA1.0 +DS1.0
  3980.                    Hostid note:  we no longer recommend using ethernet address
  3981.                                as a hostid.  It may fail on some HPUX 11.x systems.
  3982.  
  3983.                hp64_u11 -- 64-bit HP PA-RISC
  3984.                _____________________________
  3985.  
  3986.                    uname -a:   HP-UX hpc180 B.11.00 A 9000/780 2013810305 two-user
  3987.                    cc:         /bin/cc -D_HIUX_SOURCE -D_HPUX_SOURCE +DA2.0W +DS2.0W
  3988.  
  3989.                i86_b2
  3990.                ______
  3991.  
  3992.                    uname -a:   BSD/OS bsdi.globes.com 2.1 BSDI BSD/OS 2.1
  3993.                                Kernel #1: Mon Jun 10 15:58:19 MDT 1996
  3994.                                polk@demiurge.BSDI.COM:/usr/src/sys/compile/GENERIC
  3995.                                i386
  3996.                    cc:         /usr/bin/cc
  3997.                    Multi-threaded heartbeats are not supported.
  3998.  
  3999.                i86_f3
  4000.                ______
  4001.  
  4002.                    This is the freebsd platform.  We no longer support i86_f2, which
  4003.                    is incompatible with i86_f3.  i86_f3 however, is completely
  4004.                    compatible with i86_f4 (freebsd 4.x)
  4005.  
  4006.                    uname -a:   FreeBSD homegrown.globes.com 3.4-RELEASE FreeBSD
  4007.                                3.4-RELEASE #0: Mon Dec 20 06:54:39 GMT 1999
  4008.                                jkh@time.cdrom.com:/usr/src/sys/compile/GENERIC  i386
  4009.                    cc:         /usr/bin/cc
  4010.                    Link:       -pthread
  4011.  
  4012.                i86_l1, i86_g2, i86_r6  Linux
  4013.                ______________________
  4014.  
  4015.                    i86_l1:     Caldera linux, Redhat 4
  4016.                    i86_g2:     Linux with GLibc, Redhat 5
  4017.                    i86_r6:     Redhat 6
  4018.  
  4019.  
  4020.  
  4021.  
  4022.  
  4023.  
  4024.  
  4025.  
  4026.  
  4027.  
  4028.  
  4029.  
  4030.                                   - 62 -
  4031.  
  4032.  
  4033.  
  4034.                            i86_g2 binaries will run fine on Redhat 6, but
  4035.                            when mixing objects and libraries between redhat 5 and 6,
  4036.                            when linked and run, will not behave correctly.
  4037.  
  4038.                            i86_l1 binaries will *appear* to run on Redhat 5, but
  4039.                            will fail with wierd errors.
  4040.  
  4041.                            Only i86_r6 supports multi-threaded heartbeats.
  4042.  
  4043.                i86_u7 -- Unixware 7
  4044.                ______
  4045.  
  4046.                    uname -a:   UnixWare unixware7 5 7 i386 x86at SCO UNIX_SVR5
  4047.                    cc:         /usr/ccs/bin/cc
  4048.  
  4049.                i86_n3 -- 32-bit windows 95, 98, NT, 2000, ME
  4050.                ______
  4051.  
  4052.                    cl:         Microsoft Visual C++ v5 and higher
  4053.  
  4054.  
  4055.                rs6000_u3  AIX 3.x through 4.x,  Power PC and RS6000, 32-bit
  4056.                _________
  4057.  
  4058.                    uname -a:   AIX rs6000 1 3 000276513100
  4059.                    cc:         /bin/cc -D_BSD -D_BSD_INCLUDES
  4060.                    link flags: -lbsd
  4061.                    Multi-threaded heartbeats not supported.
  4062.  
  4063.                rs64_u4    64-bit AIX
  4064.                _______
  4065.  
  4066.                    uname -a:   AIX rs64 3 4 000687724C00
  4067.                    cc:         /usr/ibmcxx/bin/cc -DRS64 -DRS6000 -D_BSD                                 -D_BSD_INCLUDES -q64
  4068.  
  4069.                    link flags: -lbsd -q64 -lpthreads
  4070.  
  4071.                    You have to use "ar -X64" and "strip -X64" on this platform also.
  4072.                    Older 32-bit binaries run fine on this OS.
  4073.                    Multi-threaded heartbeats not supported.
  4074.  
  4075.                sco_u3 -- SC0 3.2 and higher
  4076.                ______
  4077.  
  4078.  
  4079.                    NOTE:  If CRO is used, you will get lots of warnings during
  4080.                           link.  These are harmless and should be ignored.
  4081.  
  4082.                    uname -a:   SCO_SV sco 3.2 2 i386
  4083.                    cc:         /bin/cc
  4084.                    Multi-threaded heartbeats not supported.
  4085.  
  4086.  
  4087.  
  4088.  
  4089.  
  4090.  
  4091.  
  4092.  
  4093.  
  4094.  
  4095.  
  4096.                                   - 63 -
  4097.  
  4098.  
  4099.  
  4100.                sgi32_u6
  4101.                ________
  4102.  
  4103.                    uname -a:   IRIX64 challenger 6.1 07121831 IP26 mips
  4104.                    cc:         /bin/cc -n32 -mips3
  4105.                    link:       /bin/cc -n32 -mips3 -lpthread
  4106.  
  4107.                    Note that o32 format is in liblmgr_o32.a in this directory.
  4108.  
  4109.                sgi64_u6
  4110.                ________
  4111.  
  4112.                    uname -a:   IRIX64 challenger 6.1 07121831 IP26 mips
  4113.                    cc:         /bin/cc -n64 -mips3
  4114.                    link:       /bin/cc -n64 -mips3 -lpthread
  4115.  
  4116.  
  4117.                sun4_u5
  4118.                _______
  4119.  
  4120.                    uname -a:   SunOS wheel.globes.com 5.5 Generic_103093-27
  4121.                                        sun4m sparc SUNW,SPARCstation-4
  4122.                    cc:         /opt/SUNWspro/bin/cc
  4123.                    link:       /bin/cc -lsocket -lnsl -lintl -lpthread
  4124.  
  4125.                sun64_u5
  4126.                _______
  4127.  
  4128.                    uname -a:   SunOS ultra5 5.7 Generic_106541-02 sun4u sparc
  4129.                                                SUNW,Ultra-5_10
  4130.                    cc:         /bin/cc -xarch=v9
  4131.                    link:       /bin/cc -lsocket -lnsl -lintl -xarch=v9 -xildoff
  4132.                                        -lpthread
  4133.  
  4134.                    Older, 32-bit binaries run fine on this OS.
  4135.  
  4136.        Bugs fixed in v8.1
  4137.        ___________________
  4138.  
  4139.                Bug  Severity   Description
  4140.                ___________________________
  4141.                P5881   3       node-locked counted should be sorted before versioning
  4142.                P6009   4       lminstalls.exe still referred to lmgrd95.exe (windows)
  4143.                P6175   3       Debug log missing BADCODE error messages
  4144.                P6176   4       (Linux only) compile warnings from lmclient.h
  4145.                P6189   3       CHECK_BADDATE set, but borrowing ignores baddate
  4146.                P6200   2       v8 lmgrd not shutting down older vendor daemons
  4147.                P6213   2       Heartbeats can fail
  4148.                P6220   3       ls_use_all_feature lines set, INCREMENT lines fail
  4149.                P6241   2       lc_auth_data + LM_CO_WAIT + port@host, failed
  4150.                P6259   4       lminstall didn't prompt for input (windows only)
  4151.  
  4152.  
  4153.  
  4154.  
  4155.  
  4156.  
  4157.  
  4158.  
  4159.  
  4160.  
  4161.  
  4162.                                   - 64 -
  4163.  
  4164.  
  4165.  
  4166.                P6265   3       lmgrd -local and lmreread failed
  4167.  
  4168.        Bugs fixed in v8.0
  4169.        ___________________
  4170.  
  4171.                Bug  Severity   Description
  4172.                ___________________________
  4173.                P4943   3       FLEXlm removes root path from license list (windows)
  4174.                P5035   3       Lmgrd in loop spawning vendor daemons (windows)
  4175.                P5206   4       Vdaemon in directory named same as vdaemon fails
  4176.                                        (windows)
  4177.                P5311   5       Debug log on Windows uses Unix terminology
  4178.                P5312   3       Server doesn't detect ethercard hostid removed (windows)
  4179.                P5413   5       Compile warnings on some compilers
  4180.                P5424   4       lmcrypt reports -9 BADHOST error incorrectly
  4181.                P5446   5       Typo in license finder window (windows)
  4182.                P5447   4       Options file pool selection fails with KEY=
  4183.                P5530   4       SUPERSEDE can generate incorrect error message in
  4184.                                debug log
  4185.                P5546   3       Lmtools can't shutdown 3-server system (windows)
  4186.                P5551   3       Failure if 2 licenses in path with same name
  4187.                P5586   3       MAX_OVERDRAFT lost after a server reread
  4188.                P5588   4       Link warnings (32-bit SGI)
  4189.                P5608   4       Error message sometimes doesn't include feature name
  4190.                P5611   4       Service fails if options file path has space (windows)
  4191.                P5654   4       LM_CO_LOCALTEST sometimes generated errors in debuglog
  4192.                P5659   4       Lmcrypt ignores syntax errors
  4193.                P5671   3       Lmswitchr doesn't report errors
  4194.                P5672   3       Lmstat -a incorrect, dup INCREMENT, line different case.
  4195.                P5761   3       Lmdiag won't work with older vendor daemon (-83)
  4196.                P5803   3       Lmdiag errors can show up in debuglog
  4197.                P5814   4       lmcrypt adds a lowercase L to some hostids (windows)
  4198.                P5821   4       Memory leak
  4199.                P5899   3       MAC doesn't read unix format licenses
  4200.                P5985   3       Lc_userlist not multi-thread safe
  4201.  
  4202.        [$Id: RELEASE_NOTES,v 1.112 2002/01/23 15:52:06 daniel Exp $]
  4203.  
  4204.  
  4205.  
  4206.  
  4207.  
  4208.  
  4209.  
  4210.  
  4211.  
  4212.  
  4213.  
  4214.  
  4215.  
  4216.  
  4217.  
  4218.  
  4219.  
  4220.  
  4221.  
  4222.  
  4223.  
  4224.  
  4225.